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