0

我正在使用 Spring 注释来初始化我的 BayeuxServer。我通过在我的 Spring bean 中设置传输来启用 websocket -

 BayeuxServerImpl bean = new BayeuxServerImpl();

 bean.setTransports(new WebSocketTransport(bean));

但是现在,当 websocket 连接失败或被禁用时js($.cometd.websocketEnabled = false;),它并没有成功回退到长轮询。"400 Unknown Bayeux Transport"它在萤火虫控制台中引发错误。

我无法设置LongPollingTransportsetTransports因为LongPollingTransport它是库中的一个抽象类。我尝试创建一个扩展LongPollingTransport并在 API 中指定它的类setTransports,但这也不起作用。如果我做错了什么,请告诉我。如果 websocket 失败,我们需要长轮询才能工作。

彗星版本:2.5.1

码头版本:7.6.8

4

1 回答 1

1

通过仅使用一种传输方式调用BayeuxServer.setTransports(...),您基本上禁用了任何回退功能,因为您明确告诉 CometD 仅使用 1 种传输方式。

LongPollingTransport根据使用的具体机制,类有 2 个子类;你可能想使用 class JSONTransport

请注意,CometD 文档有一个示例,说明如何使用 XML 使用 Spring 设置 WebSocket,但是将 XML 转换为代码以使其与注释一起使用就足够了。

基本上,这一切都归结为:

bayeuxServer.setTransports(new WebSocketTransport(bayeuxServer), new JSONTransport(bayeuxServer));
于 2013-05-03T17:11:32.297 回答