sockets - 握手后立即发送 WebSocket 消息

标签 sockets node.js client-server websocket handshake

我正在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/

相关文章:

java - Android 客户端 - Java 服务器 : how many clients can a server support at the same time?

python - 尝试用Python构建Web服务器和客户端程序

python - 捕获套接字超时异常

node.js - 当使用已弃用的 `crypto.createCipher` 函数时,Node.JS 加密模块如何生成 key 和初始化向量?

node.js - 如何使用 Node SDK 制作用于接受付款的 Paypal 按钮?

javascript - 在 Node.JS 中导入 HTML 文件并将变量传递给它

c++ - 如何在 C++ 中通过套接字从客户端向服务器发送结构体列表(序列化问题)?

c++ - 由周期性 sendto()/recvfrom() 延迟引起的 UDP 套接字的周期性延迟峰值,Linux RT-PREEMPT 系统的 C++

java nio和ByteBuffer问题

java - Netty Nio 中 promise 的异步更新