1

我正在WebSocketnode.js 中构建一个服务器。当客户端连接后,我想立即向它发送一条消息。

但是,当我在握手完成后发送它时,Chrome 中出现错误:

Status line contains embedded null

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

看起来握手和消息在发送时会附加在一起,以防它们之间的时间间隔很短(尽管我不确定,因为我不知道如何WebSocket在 Chrome 中查看原始流量 - 如果有人这样做我会喜欢也听到了)。

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

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

4

1 回答 1

5

我已经把它整理好了——我是在有连接的时候发送的,但这当然是在握手之前发送的。所以我在做:

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

connect我只是通过在发送握手时触发我的库的事件来更改我的代码,也WebSocket就是真正建立连接的时候。

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

于 2011-07-04T12:24:29.213 回答