[英]Long Polling fallback with websocket spring initialization
我正在使用Spring注释初始化我的BayeuxServer。 我通过在Spring Bean中设置传输来启用websocket-
BayeuxServerImpl bean = new BayeuxServerImpl();
bean.setTransports(new WebSocketTransport(bean));
但是现在,当websocket连接失败或在js($.cometd.websocketEnabled = false;)
被禁用时,它并没有成功地退回长轮询。 它在Firebug控制台中引发错误"400 Unknown Bayeux Transport"
。
由于LongPollingTransport
是库中的抽象类,因此无法在setTransports
设置LongPollingTransport
。 我尝试创建一个扩展LongPollingTransport
的类,并在setTransports
API中指定该类,但这也不起作用。 如果我做错了事,请告诉我。 如果websocket失败,我们需要进行长时间的轮询。
cometd版本:2.5.1
码头版本:7.6.8
通过仅用一种传输方式调用BayeuxServer.setTransports(...)
,就可以基本上禁用任何后备功能,因为您明确告诉CometD仅使用1种传输方式。
根据所使用的特定机制, LongPollingTransport
类具有2个子类。 您可能要使用JSONTransport
类。
请注意, CometD文档提供了一个示例, 说明如何使用XML 使用Spring设置WebSocket ,但是足以将XML转换为代码以使其与注释一起使用。
基本上,这可以归结为:
bayeuxServer.setTransports(new WebSocketTransport(bayeuxServer), new JSONTransport(bayeuxServer));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.