繁体   English   中英

WebSocket Spring初始化的长轮询回退

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM