【问题标题】:Send WebSocket message immediately after handshake握手后立即发送 WebSocket 消息
【发布时间】:2011-07-04 11:53:59
【问题描述】:

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

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

Status line contains embedded null

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

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

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

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

【问题讨论】:

  • 你使用的是哪个 WebSocket 库?
  • @Alnitak:其实我用的是我自己的。
  • 我用过github.com/ncr/node.ws.js的那个,没有看到这个问题。

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-08-25
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2021-11-18
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多