/meta/connect 通道消息 reconnect=handshake 应该触发什么操作?

what actions should be triggered for /meta/connect channel message reconnect=handshake?

我的应用程序订阅了某个 Broadcast Bayeux 频道。它还会监听元通道,以在通过 /meta/connect 发生任何连接失败时接收任何建议。现在我的问题是我是否需要重新启动我的 Bayeux 客户端,即首先 disconnect() 并再次尝试 handshake() 或者只有 handshake() 调用足以在我收到 reconnect=handshake 作为建议时恢复连接?

请发表评论以获取更多信息。

这就是我为 bayeux 客户端设置长轮询连接的方式

LongPollingTransport transport = new LongPollingTransport(options,
                httpClient) {
            @Override
            protected void customize(Request request) {
                request.header("Authorization", "OAuth " + accessToken);
            }
        };

现在,我通过请求 header 传递的这个访问令牌具有一些刷新时间值。可以说是30分钟。这些是我做的实现

第一次实施:

每 120 分钟我使用 client.unsubsrcibe 和客户端重新握手()但得到 illegalstate 异常。似乎需要断开连接才能重新握手,但不确定。所以每 120 分钟重新启动一次客户端。但是这种方式的监听器被丢弃可能是由于 accessToken 无效,因为我不是每 29 分钟更新一次。

第二次实施:

我每 29 分钟重新登录一次,获取新的连接 accessToken,这样每次回调到这个自定义方法时都会有有效的令牌。

上述机制在一段时间后失败,监听器被丢弃。并从 meta/connect

中得到以下内容

{"clientId":"4hi1pg62ce7bri39fnv3apg4j5ch","advice":{"reconnect":"handshake","interval":500},"channel": "/meta/connect","id":"103","error":"403::Unknown client","successful":false}

{"clientId":"5atyxwdtyoggv4s1v3ce4dobm9u9","advice":{"reconnect":"handshake","interval":500},"channel": "/meta/connect","id":"2203","error":"403::Unknown client","successful":false}

第三次实施:

在我的第二个实现中,我触发了 client.disconnect() 和 client.hanshake(),这取决于 meta/connect 消息,即每当我收到 reconnect = handshake 时,我都会断开连接并握手,它是仍然正常工作,没有任何错误。

你能告诉我我遗漏了什么以及实现这些场景的正确方法应该是什么吗??

您不需要做任何事情。

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

对于应用程序,advice 字段仅供参考。