8b649bd2ead8e5584fbba6c9b879a02c.gif

在成功利用swoole_websocket_server 开启websocket服务之后,遇到一个问题,大多数web都是https的,特别是涉及到安全性比较高,设计互联网金融、数字货币的时候,https都是必须的。这时候,因为安全问题,ws://连接会被禁止。

简单说明(一)

nginx顶部配置 

map $http_upgrade $connection_upgrade {

    default upgrade;

    '' close;

}

upstream websocket {

    server 你的ip地址:你的端口;  #这里可以是多个服务端IP(分多行),设置权重就可以实现负载均衡了

}

    #SSL-END 下边配置    

    #SSL-END

    #wss协议转发 前端里面要访问的链接

    # 访问:wss://xxxx.com/app

    location /app {

        proxy_pass http://你的域名:你的ws端口号;#代理到上面的地址去,

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "Upgrade";

    }

已解决网站安装SSL证书后,Swoole websoket wss报错误:failed: WebSocket opening handshake timed out,最终超时连接不上的问题。

创建wss服务

问:

Workerman如何创建一个wss服务,使得客户端可以用过wss协来连接通讯,比如在微信小程序中连接服务端。

答:

wss协议实际是websocket+SSL,就是在websocket协议上加入SSL层,类似https(http+SSL)。
所以只需要在websocket协议的基础上开启SSL即可支持wss协议。

方法一 ,直接用Workerman开启SSL

准备工作:

1、Workerman版本不小于3.3.7

2、PHP安装了openssl扩展

3、已经申请了证书(pem/crt文件及key文件)放在磁盘任意目录

代码:

Logo

一站式 AI 云服务平台

更多推荐