长链接WSS与WS

HTTPS请求下长链接的协议就必须为wss,而HTTP请求下长链接的协议可以为WSS或者WS。

WSS协议有两种版本可以实现,第一种是workerman中配置sll证书。第二种是利用反向代理来代理端口

方法一、通过反向代理配置

详细反向代理配置查看配置说明

检测是否连接成功

打开chrome浏览器,按F12打开调试控制台,在Console一栏输入(或者把下面代码放入到html页面用js运行)


// 证书是会检查域名的,请使用域名连接
ws = new WebSocket("wss://域名/msg");
ws.onopen = function() {
    alert("连接成功");
    ws.send('tom');
    alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
    alert("收到服务端的消息:" + e.data);
};

方法二、通过配置ssl证书

比较难配置一般不建议使用,系统中不过已经实现了这块的逻辑这种有个缺点,就是必须的是HTTPS访问。

长连接不上怎么检查?

检查workerman有没有启动

使用php think workerman status查看运行状态

使用IP+端口测试端口是否开放

windows下使用命令:telnet ip 20002。ip需要换成自动服务器的ip。连接成功会响应tcp内容

端口开放了,长链接还是无法连接

  1. 检查反向代理配置是否正确

  2. apache配置反向代理需要在80和443中配置

  3. 不能使用域名+端口的形式访问站点,长链接在提取域名时会一起携带端口,导致无法连接

chrome浏览器,按F12打开调试控制台点击network->ws 查看连接状态

根据下图所示,查看连接状态,status一栏101为正常连接