这困扰了我将近两天。
我正在写 Bayeux 客户端。我使用来自 Jetty的 WebSocket 客户端库并连接到Faye服务器。
我使用握手请求打开到服务器的 WS 连接(所有 localhost):
{"channel":"/meta/handshake","supportedConnectionTypes":["long-polling","callback-polling","websocket"],"version":"1.0"}
客户端立即收到握手响应:
{"channel":"/meta/handshake","successful":true,"version":"1.0","supportedConnectionTypes":["long-polling","cross-origin-long-polling","callback-polling","websocket","eventsource","in-process"],"clientId":"l8xhgf0t5gikcukcknhr5npfx11s5w9","advice":{"reconnect":"retry","interval":0,"timeout":45000}}
然后客户端发送连接请求:
{"clientId":"l8xhgf0t5gikcukcknhr5npfx11s5w9","connectionType":"websocket","channel":"/meta/connect"}
然后服务器挂起 45s(超时的值),然后发送这个响应:
{"clientId":"l8xhgf0t5gikcukcknhr5npfx11s5w9","channel":"/meta/connect","successful":true,"advice":{"reconnect":"retry","interval":0,"timeout":45000}}
Faye 服务器挂起之前的最后一条日志消息:Ping "l8xhgf0t5gikcukcknhr5npfx11s5w9", 45
但我从来没有在客户端收到 Ping 帧。我不知道为什么服务器会在 45 秒内挂起,但我需要解决这个问题。你们中有人见过吗?非常感谢任何帮助/建议/提示:)