我的应用程序订阅了一些Broadcast Bayeux频道。它还可以通过/ meta / connect监听元通道以获得任何连接失败的建议。现在我的问题是我是否需要重新启动我的Bayeux客户端,即先断开连接()并再次尝试握手()或者当我获得重新连接=握手作为建议时,握手()调用足以获得连接?
如有任何进一步的信息,请发表评论。
这是我为bayeux客户端
设置longpolling连接的方法LongPollingTransport transport = new LongPollingTransport(options,
httpClient) {
@Override
protected void customize(Request request) {
request.header("Authorization", "OAuth " + accessToken);
}
};
现在,我通过请求标头传递的访问令牌有一些刷新时间值。让我们说它是30分钟。这些是我做过的实现
Fisrt实施:
在每120分钟我使用client.unsubsrcibe和客户端重新握手()但是得到了非法状态异常。看起来像断开连接需要重新握手不确定。所以使用每120分钟重启客户端。但这种听众被丢弃的方式可能是由于我无法每隔29分钟更新一次因为无效的访问权限。
第二次实施:
每隔29分钟,我使用重新登录获取新连接accessToken,以便在每个回调时,此自定义方法将具有有效令牌。
上述机制在一段时间后失败,听众被删除。并从meta / connect
获得以下内容{ “的clientId”: “4hi1pg62ce7bri39fnv3apg4j5ch”, “建议”:{ “重新连接”: “握手”, “间隔”:500}, “信道”: “/间/连接”, “ID”: “103” ,“错误”:“403 ::未知客户端”,“成功”:false}
{ “的clientId”: “5atyxwdtyoggv4s1v3ce4dobm9u9”, “建议”:{ “重新连接”: “握手”, “间隔”:500}, “信道”: “/间/连接”, “ID”: “2203” ,“错误”:“403 ::未知客户端”,“成功”:false}
第三次实施:
在我的第二个实现中,我触发了client.disconnect()和client.hanshake(),具体取决于元/连接消息,即每当我得到重新连接=握手时,我会断开连接和握手,它仍然可以正常工作而没有任何错误。< / p>
你能说出我错过了什么,以及实现这些场景的正确方法是什么?
答案 0 :(得分:0)
您无需做任何事情。
advice
字段携带的信息由实现处理,因此您的应用程序(或任何应用程序)不应根据advice
字段的信息执行任何操作。
对于应用程序,advice
字段只是提供信息。