握手后立即发送WebSocket消息

时间:2011-07-04 11:54:00

标签: sockets node.js client-server websocket handshake

我正在node.js中构建一个WebSocket服务器。当客户端已连接时,我想立即向其发送消息。

然而,当我在握手完成后发送它时,我在Chrome中收到错误:

Status line contains embedded null

当我在握手后100毫秒使用setTimeout发送消息时,它可以工作,但是当使用这种技术使用10毫秒时,它再次无效。

看起来握手和消息在一起发送时会被附加,以防它们之间的时间间隔很小(虽然我不确定,因为我不知道如何查看Chrome中的原始WebSocket流量 - 如果有人,我也很乐意听到这一点。

我不希望服务器等待100毫秒,因为它对于客户端来说肯定是显而易见的,而且它看起来像一个肮脏的技巧而不是一个很好的解决方案。

如何在握手后立即发送消息?

1 个答案:

答案 0 :(得分:5)

我已将它整理出来了 - 当有连接时我发送它,但这是在握手被发送之前。所以我在做:

client connected
send message
receive handshake request
send handshake response
...

我刚刚在发送握手时触发了我的库的connect事件来改变我的代码,这是WebSocket连接真正建立的时候。

作为旁注,我想提一下,调试WebSocket连接时,chrome:// net-internals /是一个非常有用的页面(您可以轻松查看请求/响应握手)。我应该早点知道......