/ meta / connect channel message reconnect = handshake应该触发什么操作?

时间:2018-02-21 09:20:17

标签: salesforce jetty jetty-9 cometd bayeux

我的应用程序订阅了一些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>

你能说出我错过了什么,以及实现这些场景的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您无需做任何事情。

advice字段携带的信息由实现处理,因此您的应用程序(或任何应用程序)不应根据advice字段的信息执行任何操作。

对于应用程序,advice字段只是提供信息。