如题,移动端用ws是能够成功连接的,所以我在pc端用wss进行了类似的思路和步骤。
1.在nginx配置中添加了如下代码
location /websocket/ {
proxy_pass http://我的公网IP:端口号;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
2.在start_gateway.php中添加以下代码
// 证书最好是申请的证书
$context = array(
// 更多ssl选项请参考手册 http://php.net/manual/zh/context.ssl.php
'ssl' => array(
// 请使用绝对路径
'local_cert' => '阿里云证书的绝对路径', // 也可以是crt文件
'local_pk' => '阿里云证书的绝对路径',
'verify_peer' => false,
// 'allow_self_signed' => true, //如果是自签名证书需要开启此选项
)
);
// websocket协议(端口任意,只要没有被其它程序占用就行)
$gateway2 = new Gateway("websocket://0.0.0.0:端口号", $context);
这一步跟官网文档没区别
然后在确保服务正常开启、移动端用ws能够成功连接、端口号未被占用、防火墙添加端口号白名单 的情况下
3.在前端代码中进行连接
ws = new Worker("wss://我的域名:端口号");
结果报错了
WebSocket connection to 'wss://我的域名:端口号/' failed:
failed后面还是空的,我也不知道啥意思,直接默认为是根本就没对上地址,可能是我写错了
经过搜索之后我用
ws = new Worker("wss://我的域名/websocket/");
试了一下也不行,用
ws = new Worker("wss://我的公网IP:端口号");
就更不用说了,反正无论如何都连接不上
各位大佬,请问我是哪里写错了