2015-02-23 117 views
0

这让我感到困扰了近两天。Bayeux服务器挂起连接请求

我正在写贝叶客户端。我使用Jetty的WebSocket-client库并连接到Faye服务器。

我打开与握手请求一个WS连接到服务器(一切本地主机):

{"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"} 

然后,服务器挂起45秒(超时值)然后发送这样的响应:

{"clientId":"l8xhgf0t5gikcukcknhr5npfx11s5w9","channel":"/meta/connect","successful":true,"advice":{"reconnect":"retry","interval":0,"timeout":45000}} 

王菲服务器上的最后一个日志消息,它挂起之前平安“l8xhgf0t5gikcukcknhr5npfx11s5w9”,45

但我从来没有收到客户端平架。 我不知道为什么服务器挂起这45个,但我需要解决这个问题。 有没有人见过这个?任何帮助/建议/提示非常感谢:)

回答

1

您遇到的行为正是一个贝叶服务器应该做的。

服务器不“挂起”;它以long-polling的方式持有该请求。

我不太了解Faye,但CometD project(定义了Bayeux protocol specification)以相同的方式实现服务器,其中/meta/connect消息请求保留超时值。

+0

非常感谢!我很困惑,因为我选择了传输为websocket,因此我期望这个消息能够立即返回。下一次我需要更仔细地阅读规格。 – 2015-02-25 13:33:48

+0

@TomasZaoral作为CometD项目的领导者我会对您在编写Bayeux客户端的语言/平台感兴趣。 CometD项目有一个Java和一个对Faye项目不太确定的JavaScript。 – sbordet 2015-02-25 17:31:30

相关问题