Javascript CometD v3.0.9-服务器端断开连接不';t在消息上设置成功标志(通道/元/断开连接)

Javascript CometD v3.0.9-服务器端断开连接不';t在消息上设置成功标志(通道/元/断开连接),javascript,java,jquery,cometd,bayeux,Javascript,Java,Jquery,Cometd,Bayeux,我们正在将cometd从2.5版升级到3.0.9版,但禁用了WebSocket。 我们注意到的变化之一是:- org.cometd.server.ServerSessionImpl disconnect()方法在将消息发布到“/meta/disconnect”通道之前,不再在消息上设置成功标志。从GitHub Comed存储库中注意到,它在2015年10月14日作为提交的一部分被删除——改进了服务器端断开连接的处理(用户sbordet) 现在,在客户端,我们使用jquery与cometd(jqu

我们正在将cometd从2.5版升级到3.0.9版,但禁用了WebSocket。 我们注意到的变化之一是:- org.cometd.server.ServerSessionImpl disconnect()方法在将消息发布到“/meta/disconnect”通道之前,不再在消息上设置成功标志。从GitHub Comed存储库中注意到,它在2015年10月14日作为提交的一部分被删除——改进了服务器端断开连接的处理(用户sbordet)

现在,在客户端,我们使用jquery与cometd(jquery.cometd.js)进行接口。每当从服务器端收到cometd disconnect消息时,我们都会发出重新连接。我们在尝试重新连接之前检查以下条件

$.cometd.isDisconnected() && (message.channel == "/meta/disconnect" && message.successful)
消息。成功的检查失败,因为由于断开连接API的更改,其从未在服务器端设置。因此,会话永远不会重新连接/恢复,从而导致服务器根本不知道该会话,因此,服务器端不会将任何服务器推送到客户端服务消息

我们希望保留此检查,因为在注销期间,此标志已成功设置。在注销期间,我们调用下面的客户端方法,这反过来会导致服务器端(在BayeuxServerImpl下)上的DisconnectHandler被调用。DisconnectHandler消息事件在回复消息上将此标志设置为true

$.cometd.disconnect()

首先,我想了解当从服务器端启动disconnect时,为什么cometd disconnect消息上不再设置成功标志(希望它与DisconnectHandler行为一致)。第二,是否有一种可能的替代方法来设置此标志,即通过客户端或服务器端的覆盖

已从服务器端断开连接消息中删除
successful
标志,因为这是一条未经请求的消息,不是对客户端启动的断开连接的回复,需要区分这两条消息

未经请求的邮件没有message
id
successful
字段


如果服务器断开了一个客户机的连接,并且您想重新连接该客户机,那么为
/meta/disconnect
频道注册一个侦听器就足够了。对于未经请求的断开连接和断开连接回复,将调用侦听器,如果需要,您可以重新进行握手。

感谢Simone的回复。据我所知,我们可以收到消息。成功检查可选。也就是说,在/meta/disconnect listener下,仅当该标志可用时才检查该标志。因此,检查将继续进行,就像客户端启动的断开一样,而服务器启动的断开(即未经请求的消息)不会进行检查,因为没有此标志。另一方面,我们始终注意到cometd javascript在升级后登录到浏览器控制台的以下信息异常,虽然这不会影响任何功能。这是我们应该担心的吗<代码>执行扩展重新加载摘要期间的异常我们最初的观察结果是,当消息属于/meta/connect通道且id为“402:未知客户端”时,通常会发生这种情况。很可能在其他情况下发生,但不确定。最终,重新连接逻辑会导致消息具有有效id,因此看不到任何影响。
执行扩展重新加载抽象时出现异常
是因为您没有覆盖这些“抽象”方法的cookie库。你用什么,jQuery还是Dojo?嗨,Simone,我们用的是jQuery。是否有建议使用的cookie库?请注意cometd 3.0.9 tar分发中的以下内容。。cometd-3.0.9-distribution\cometd-3.0.9\cometd javascript\examples jquery\src\main\webapp\jquery\jquery.cookie.js就是这个吗??如果我们开始使用它,除了消除异常之外,对应用程序有什么影响?谢谢..
jquery.cookie.js
是一个可以使用的库,是的。如果不使用它,重新加载扩展将无法工作-是的,您正在使用重新加载扩展,否则不会触发该异常。
$.cometd.disconnect()