これは非常に奇妙です。私のログの要約出力は次のとおりです。
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
次の 2 行が空白であることに注意してください。
debug - client authorized for
debug - websocket writing 1::
2 番目のブロック (すべて同じログ内) は、クライアントの Web ページを更新した後に発生します。接続 URL は同じですが、
debug - client authorized for /59a0747b-50b3-46c9-be7e-3d74fd513fcf
debug - websocket writing 1::/59a0747b-50b3-46c9-be7e-3d74fd513fcf
ノードが名前空間のクライアントにデータを送信するために必要な情報を表示しています。
編集:特に
オブジェクトを調査すると、クライアントのソケットがリストされている場合に、接続を正常に確立するためにクライアントページを更新する必要がある理由がわかりません。
最初のクライアント接続後、名前空間が io オブジェクトのどこかにあることはありません。なんで?io.namespaces['/59a0747b-50b3-46c9-be7e-3d74fd513fcf'].sockets
クライアント接続で最初に発生するのはdbルックアップであり、node-mysqlを使用していますが、別のリモートサーバーに接続してその情報を取得することに言及する価値があるかもしれませんし、そうでないかもしれません。