0

这很奇怪。这是我的日志的删节输出:

info  - socket.io started
debug - served static content /socket.io.js
debug - client authorized
info  - handshake authorized D7J-52pdfYAtijFhFxh7
debug - setting request GET /socket.io/1/websocket/D7J-52pdfYAtijFhFxh7
debug - set heartbeat interval for client D7J-52pdfYAtijFhFxh7
debug - client authorized for
debug - websocket writing 1::
establishing db connection.
Attaching new socket D7J-52pdfYAtijFhFxh7 to namespace /59a0747b-50b3-46c9-be7e-3d74fd513fcf for actID: 1.

debug - served static content /socket.io.js
debug - client authorized
info  - handshake authorized 6eUwG7fH-CG3vx3CFxh8
debug - setting request GET /socket.io/1/websocket/6eUwG7fH-CG3vx3CFxh8
debug - set heartbeat interval for client 6eUwG7fH-CG3vx3CFxh8
debug - client authorized for
debug - websocket writing 1::
establishing db connection.
debug - client authorized for /59a0747b-50b3-46c9-be7e-3d74fd513fcf
debug - websocket writing 1::/59a0747b-50b3-46c9-be7e-3d74fd513fcf
Attaching new socket 6eUwG7fH-CG3vx3CFxh8 to namespace /59a0747b-50b3-46c9-be7e-3d74fd513fcf for actID: 1.

第一个块是在初始客户端连接上,它将命名空间传递给 socket.io,如下所示:http://server/59a0747b-50b3-46c9-be7e-3d74fd513fcf

请注意这两行是空白的:

debug - client authorized for
debug - websocket writing 1::

第二个块(都在同一个日志中)发生在我点击客户端网页上的刷新之后。相同的连接 URL,但您会注意到

debug - client authorized for /59a0747b-50b3-46c9-be7e-3d74fd513fcf
debug - websocket writing 1::/59a0747b-50b3-46c9-be7e-3d74fd513fcf
正在显示必要的信息,以便节点将数据发送到命名空间的客户端。

编辑: 我不明白为什么我必须刷新客户端页面才能成功建立连接,特别是当我调查io.namespaces['/59a0747b-50b3-46c9-be7e-3d74fd513fcf'].sockets对象时,列出了客户端的套接字。 在初始客户端连接之后,在 io 对象的任何位置都找不到命名空间。为什么?

可能值得一提,也可能不值得一提,数据库查找是客户端连接上发生的第一件事,我使用的是 node-mysql,但它连接到不同的远程服务器以获取该信息。

4

0 回答 0