首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当多个连接打开时,SockJS连接将关闭

当多个连接打开时,SockJS连接将关闭
EN

Stack Overflow用户
提问于 2022-03-14 09:49:36
回答 1查看 77关注 0票数 0

如果只打开一个SockJS (轮询XHR)连接,那么应用程序就能正常工作。当我在一个新窗口中额外打开它时,连接就会周期性地关闭。客户端是SockJS客户机,后端是Spring,启用了MVC和SockJS。

这就是我在服务器端看到的:

代码语言:javascript
复制
2022-03-14 10:40:20.992 DEBUG 752 --- [nio-8311-exec-7] a.w.b.u.d.websocket.WebSocketHandler     : connection opened, id: gqgmlrff
2022-03-14 10:40:21.015 DEBUG 752 --- [nio-8311-exec-9] a.w.b.u.d.websocket.WebSocketHandler     : Server received message: {"action":"subscribe","payload":{"id":"c910f5d1-9e16-4e30-9559-e0e27973177b","entityType":"PROJEKT"}}

15-20秒后

代码语言:javascript
复制
2022-03-14 10:40:40.075 DEBUG 752 --- [      SockJS-10] a.w.b.u.d.websocket.WebSocketHandler     : connection closed, sessionId: gqgmlrff, status: CloseStatus[code=3000, reason=Go away!]

这在两个窗口的会话中都是无限重复的。看来会话关闭将由后端发起,因为在客户端将执行.onclose()处理程序。

EN

回答 1

Stack Overflow用户

发布于 2022-03-18 08:42:26

原因是,对于这两个应用程序实例,已经生成了不同的auth标记,并且没有更新等式。在更新equals()和hashCode()之后,请求得到正确处理,如下所示。

代码语言:javascript
复制
    override fun equals(obj: Any?): Boolean = obj is KeycloakToken &&
            principal == obj.principal &&
            authorities == obj.authorities &&
            isAuthenticated == obj.isAuthenticated


    override fun hashCode(): Int {
        var code = 31
        for (authority in authorities) {
            code = code xor authority.hashCode()
        }
        code = code xor principal.hashCode()
        if (this.isAuthenticated) {
            code = code xor -37
        }
        return code
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71465758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档