我正在node.js中构建一个WebSocket
服务器。当客户端已连接时,我想立即向其发送消息。
然而,当我在握手完成后发送它时,我在Chrome中收到错误:
Status line contains embedded null
当我在握手后100毫秒使用setTimeout
发送消息时,它可以工作,但是当使用这种技术使用10毫秒时,它再次无效。
看起来握手和消息在一起发送时会被附加,以防它们之间的时间间隔很小(虽然我不确定,因为我不知道如何查看Chrome中的原始WebSocket
流量 - 如果有人,我也很乐意听到这一点。
我不希望服务器等待100毫秒,因为它对于客户端来说肯定是显而易见的,而且它看起来像一个肮脏的技巧而不是一个很好的解决方案。
如何在握手后立即发送消息?
答案 0 :(得分:5)
我已将它整理出来了 - 当有连接时我发送它,但这是在握手被发送之前。所以我在做:
client connected
send message
receive handshake request
send handshake response
...
我刚刚在发送握手时触发了我的库的connect
事件来改变我的代码,这是WebSocket
连接真正建立的时候。
作为旁注,我想提一下,调试WebSocket连接时,chrome:// net-internals /是一个非常有用的页面(您可以轻松查看请求/响应握手)。我应该早点知道......