在啥情况下 websocket 关闭事件会告诉你 wasClean 是假的?
Posted
技术标签:
【中文标题】在啥情况下 websocket 关闭事件会告诉你 wasClean 是假的?【英文标题】:In what cases will a websocket close event tell you wasClean is false?在什么情况下 websocket 关闭事件会告诉你 wasClean 是假的? 【发布时间】:2014-06-13 20:45:41 【问题描述】:在什么情况下 websocket 关闭事件会告诉你 wasClean 是假的?例如:
connection.onclose = function(event)
if(!event.wasClean)
// whyyyyyyy???
【问题讨论】:
可能来自此页面的特定代码:developer.mozilla.org/en-US/docs/Web/API/CloseEvent 在我的情况下,我得到的代码是 1006。您是否建议将某些代码号的 wasClean 设置为 true?如果是这种情况,我什至看不到使用代码查看 wasClean 的值的意义。 我真的不确定,但我认为wasClean
是一种更通用的方式来判断连接是否完全关闭,然后您可以通过查看获得“更多信息”在代码处。但是是的,看来wasClean
和状态码是相关的
【参考方案1】:
当 WebSocket 连接未通过关闭握手关闭时,wasClean 属性设置为 false。 即没有从服务器接收到有效的关闭帧。
来自文档:“CloseEvent.wasClean 返回一个布尔值,指示连接是否完全关闭”
【讨论】:
我认为这应该是真的?如果我让客户端启动 close() 并且服务器以 close() 结束(这是规范),我可以获得“wasClean == true”。如果服务器启动 close(),我会在 chrome 上得到“true”,但在 firefox 上不会,但在所有情况下,我都会得到我想要的代码 (1000) 和我想要的消息 /shrug。 @AndrewPikul 我观察到 Chrome 和 Firefox 之间的相同差异 此时的行为可能已经改变,它们确实更新得相当频繁。也许维护者看到了我的评论 X'D以上是关于在啥情况下 websocket 关闭事件会告诉你 wasClean 是假的?的主要内容,如果未能解决你的问题,请参考以下文章
在啥情况下 getpeername 返回 IP:PORT 0.0.0.0:0