我正在node.js 中构建一个WebSocket
服务器。当客户端连接后,我想立即向其发送一条消息。
但是,当我在握手完成后发送它时,我在 Chrome 中收到错误:
Status line contains embedded null
当我使用 setTimeout
在握手后 100 毫秒发送消息时,它可以工作,但是当使用此技术使用 10 毫秒时,它又不起作用。
看起来握手和消息在一起发送时会被附加,以防它们之间的时间间隔很小(尽管我不确定,因为我不知道如何查看原始 WebSocket
Chrome 中的流量 - 如果有人这样做,我也很想听听)。
我不想让服务器等待 100 毫秒,因为这对于客户端来说肯定是明显的,而且它看起来像是一个肮脏的把戏,而不是一个好的解决方案。
握手后如何立即发送消息?
最佳答案
我已经整理好了 - 我是在有连接时发送的,但这当然是在握手发送之前。所以我正在做:
client connected
send message
receive handshake request
send handshake response
...
我刚刚通过在发送握手时触发库的 connect
事件来更改代码,此时 WebSocket
连接才真正建立。
作为旁注,我想提一下 chrome://net-internals/在调试 WebSocket 连接时是一个非常有用的页面(您可以轻松地看到请求/响应握手)。我早该知道的...
关于sockets - 握手后立即发送 WebSocket 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6571109/