html websocket连接不上?

生活问答  / 只看大图  / 倒序浏览   © 著作权归作者本人所有

#楼主# 2020-9-17 01:49

跳转到指定楼层
60晶币
html websocket连接不上?
html websocket连接不上?


百度云的linux主机,已搭建LAMP 环境,然后根据网上的资料教程,想搭建websocket服务环境,教程链接:https://www.cnblogs.com/murry/p/8945766.html  ,跟教程博主的操作一样。但系到了测试的时候发现新建websocket对象的时候,一直处于连接种的状态而不是连接成功。检查过服务器端口6001已经是对外开放了的我的测试链接:182.61.172.48/test.php麻烦有经验的大牛帮忙看下可以吗  万分感谢!


看到最近有很多人在blog上问关于WebSocket客户端连接和掉线的问题,有一部分我以前也遇到过,在这里我罗列了一些我以前遇到过的问题和其他简单的WebSocket服务。
Q1 客户端连接不上的问题
   这个问题我遇到的基本集中在后端,遇到的话需要收集日志进行分析,首先要查看是因为什么原因出现问题的,不过这种情况下多半会出现Exception,从Exception着手分析问题即可。
Q2 1客户端掉线问题
   这里所指的客户端掉线的问题是指客户端非正常掉线。有的时候会出现Exception,通过处理Exception即可关闭连接,有的时候像客户端突然网络离线的情况下,这个时候后台没有收到客户端发来的close frame,会认为这个客户端还是处在在线的情况。那这个问题可以通过心跳包的问题解决。也可以通过客户端向服务器发心跳包,也可以服务器发送心跳包至客户端。我们最终采用的方案是客户端向服务端发送心跳包,服务端收到心跳包后会检测当前websocket session队列中是否存在同属性的websocket session,有的话关闭以前的session即可。我个人认为还是服务端像客户端发送心跳包好一些,但这样做要注意性能问题。
Q3 websocket连接后1分钟自动断开关闭
   这是因为websocket长连接有默认的超时时间(1分钟,由proxy_read_timeout决定),就是超过一定的时间没有发送任何消息,连接会自动断开。解决办法就是让浏览器每隔一定时间(要小于超时时间)发送一个心跳。代码如下:
window.setInterval(function(){ //每隔5秒钟发送一次心跳,避免websocket连接因超时而自动断开
var ping = {"type":"ping"};
ws.send(JSON.stringify(ping));
},5000);
Q4 能收到客户端消息,后台也显示发送,但是客户端收不到
   这个问题经我个人观察和猜测,应该是websocketsession没有成功关闭或者成功关闭但是和一个websocketsession对应多个session有关,因为我把上面的问题解决了之后,这个问题也没出现过了。
最近因为工作需求较多,又有新项目要进来,项目周期太紧了,经过团队商量,自己开发WebSocket这一块,要做稳定成本太高了,所以我们决定使用第三方的WebSocket服务,经过我们对比多个第三方服务,最终发现了一个Java websocket神器叫GoEasy,相比较其他的三方,我觉得这个上手更加简单,对各种浏览器的兼容也非常好。用到现在也没有什么问题,你们有兴趣的可以去试一下。

如果连接不上去,你检测下是不是网络中断了。

本人是nodejs玩家,不懂php。但是我相信和laravel-echo-server的配置有关。你去看看laravel-echo-server的正确的使用方法再说,例如涉及到跨域的这些。

热帖推荐




上一篇:西安长安区蓝宝石燃气灶售后维修电话/全市区400客服统一报修
下一篇:谁知道那里有编珠子的,手链的哪种,或者有联系方式也行
回复

使用道具

成为第一个回答人

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则