接着上一篇文章GatewayWorker启动服务时,出现Call to undefined function pcntl_signal()报错提示的解决办法,继续进行websocket开发
websocket连接测试
由于源码下载下来后,默认的应用层协议是tcp协议,因此需要修改协议为websocket
打开文件GatewayWorker/Applications/YourApp/start_gateway.php
修改$gateway
进程地址
// gateway 进程,这里使用Text协议,可以用telnet测试
$gateway = new Gateway("websocket://0.0.0.0:8282");
这里使用websocket协议,端口为8082
进入WebSocket 在线测试
输入服务器的IP和端口号,进行连接测试
发现无法连接。
消息窗口出现如下提示:
你 21:44:50
等待服务器Websocket握手包...
服务器 21:44:50
和服务器断开连接!
打开控制台,出现如下调试信息
WebSocket connection to 'ws://xxx:8282/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
下面利用官方文档和搜索引擎,来查询问题
客户端连接失败原因
此部分内容来自workerman官方文档
连接失败客户端一般会有两种报错,connection refuse
和 connection timeout
connection refuse(连接拒绝)
一般是以下原因:
1、客户端连接的端口错了
2、客户端连接的域名或者ip错了
3、如果客户端使用了域名连接,域名可能指向了错误的服务器ip
4、服务器使用了cdn等加速代理,导致连接的实际ip与预期ip不一致
5、服务端没有启动或者端口没有被监听
6、使用了网络代理软件
7、服务端监听ip与访问地址不在一个地址段。例如服务端监听127.0.0.1,则客户端只能通过127.0.0.1连接,不能通过局域网ip或者外网ip连接。建议监听地址设置为0.0.0.0,这样本机、内网、外网都可以连接。
connection timeout(连接超时)
一般是以下原因:
1、服务器防火墙阻止了连接,可以临时关闭防火墙试下
2、如果是云服务器,安全组也可能会阻止连接建立,需要到管理后台开放对应端口
3、如果用了宝塔等面板,需要在宝塔中开放对应端口
4、服务器不存在或者没有启动
5、如果客户端使用了域名连接,域名可能指向了错误的服务器ip
6、客户端访问的ip是服务器内网ip,并且客户端和服务端不在一个局域网
放行宝塔端口
测试连接时,出现ERR_CONNECTION_REFUSED
提示,要放行宝塔端口
在宝塔的安全设置中,添加端口规则,提交
再次尝试连接测试,发现还是无法连接,控制台出现如下提示
WebSocket connection to 'ws://xxx:8282/' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT
这次出现的是ERR_CONNECTION_TIMED_OUT
超时提示。
怎么办呢?
放行安全组端口
由于后台采用的是腾讯云的服务器,因此需要进到服务器的安全组设置,添加端口放行。
进入云服务器,找到服务器所在的实例,配置安全组
弹出安全组信息面板,记住当前实例所在的安全组的名称
在左侧菜单中,进入安全组列表,找到实例对应的安全组
在右侧的操作菜单中,修改规则——添加入站规则
接下来就可以成功连接了
你 22:20:21
等待服务器Websocket握手包...
你 22:20:21
收到服务器Websocket握手包.
服务器 22:20:21
Websocket连接已建立,正在等待数据...
服务器 22:20:21
Hello 7f0000010b5700000001\r\n
服务器 22:20:21
7f0000010b5700000001 login\r\n
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » GatewayWorker安装和连接测试,websocket报错ERR_CONNECTION_REFUSED和ERR_CONNECTION_TIMED_OUT解决办法