websokcet中客户端主动关闭问题
请假一下各位社区高手,我用php写了一个socket服务端,然后浏览器用websocket协议连接通讯,实际测试下来,收发消息没有任何问题。但是遇到一个问题,当我的页面关闭时,我服务端的socket并没有立即close。(特别注意,当我的页面关闭时,浏览器的socket还在,因为我后台第一时间收到了他发来的消息,而且是有内容的,只不过是乱码)还要注意的是,我的这种情况和客户端断网,司机是不一样的情况,虽然我的浏览器窗口关闭了,但是我确保socket还存留。
最后等我的浏览器关闭了大概3分钟过后,服务端立马输出日志,有一个socket断开了?
【问题】说了这么多,我就想知道,当我关闭浏览器的一刹那,浏览器上的socket给服务端发了什么东西,是8个字节的内容,输出是乱码。肯定不是四次挥手告别,因为我用tcp抓包工具看过,浏览器关闭的时候那个socket状态没有任何变化,一直是established。而是过了3分钟开始变化的
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
websocket链接一般都是由服务端主动触发的,即使是客户端触发的,本质上也是先发往服务端一个关闭连接请求,再等待服务端关闭信号。如果客户端在连接过程中异常关闭(由于某种算法或规定,一端直接关闭连接。特指在open handshake打开连接阶段,底层连接丢失导致的连接中断),服务端是无法知道这种情况的。
websocket服务端是无法获知客户端异常关闭的状态的,服务端或者客户端需要定时做心跳检测来判断连接状态。