关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

网页ws wss服务搭建

发布时间:2021-03-19 11:37:46

WS(WebSocket)是HTML5一种新的协议。它实现了浏览器与服务器全双工通信,能更好地节省服务器资源和带宽并达到实时通讯。WebSocket建立在TCP之上,同HTTP一样通过TCP来传输数据,但是它和HTTP最大不同是,WebSocket是一种双向通信协议,在建立连接后,WebSocket服务器和B/C都能主动的向对方发送或接收数据;WebSocket通过TCP与服务器握手建立连接,连接成功后双向通信。

WSS(Web Socket Secure)是WebSocket的加密版本,类型http和https。

image.png

1.使用workerman搭建wss服务

<?php

require_once __DIR__ . '/Workerman/Autoloader.php';

use Workerman\Worker;

 

// 证书最好是申请的证书

$context = array(

    // 更多ssl选项请参考手册 http://php.net/manual/zh/context.ssl.php

    'ssl' => array(

        // 请使用绝对路径

        'local_cert'                 => '磁盘路径/server.pem', // 也可以是crt文件

        'local_pk'                   => '磁盘路径/server.key',

        'verify_peer'                => false,

        // 'allow_self_signed' => true, //如果是自签名证书需要开启此选项

    )

);

// 这里设置的是websocket协议(端口任意,但是需要保证没被其它程序占用)

$worker = new Worker('websocket://0.0.0.0:443', $context);

// 设置transport开启ssl,websocket+ssl即wss

$worker->transport = 'ssl';

$worker->onMessage = function($con, $msg) {

    $con->send('ok');

};

 

Worker::runAll();

通过以上的代码,Workerman就监听了wss协议,客户端就可以通过wss协议来连接workerman实现安全即时通讯了

 

2.nginx一般作为网站服务器运行着其它服务,为了不影响原来的站点使用,这里使用地址域名/wss 作为wss的代理入口。也就是客户端连接地址为 wss://域名/wss

server {

  listen 443;

 

  ssl on;

  ssl_certificate /etc/ssl/server.pem;

  ssl_certificate_key /etc/ssl/server.key;

  ssl_session_timeout 5m;

  ssl_session_cache shared:SSL:50m;

  ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;

  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

 

  location /wss

  {

    proxy_pass http://127.0.0.1:8282;

    proxy_http_version 1.1;

    proxy_set_header Upgrade $http_upgrade;

    proxy_set_header Connection "Upgrade";

    proxy_set_header X-Real-IP $remote_addr;

 



/template/Home/Zkeys/PC/Static
翔云网络帮助中心