【问题标题】:Spring websocket with sockjs and stomp client side design带有 sockjs 和 stomp 客户端设计的 Spring websocket
【发布时间】:2016-03-21 17:10:25
【问题描述】:

我正在将 spring web-sockets 集成到 web 应用程序中。我想将它用于在 ajax 中花费很长时间的两个调用。根据我的理解,我看到关于如何处理这个问题有不同的设计选择。我正在考虑以下问题,你能告诉我什么是最好的选择吗?如果是,为什么

1) 用户通过 SockJS 登录应用程序后打开一个套接字连接,并使用此连接发送消息并订阅我想要进行的两个调用。我对这个设计的一个问题是,如果用户只是关闭浏览器,套接字连接是否会保持打开状态?

2) 每次调用都打开一个socket连接,收到消息后关闭它,但是这里每次建立连接都会占用大量资源。

我对 spring-websocket、SockJS 和 STOMP 的东西还很陌生,所以让我知道我的理解在哪里是错误的?

提前致谢

【问题讨论】:

    标签: java web stomp spring-websocket sockjs


    【解决方案1】:
    1. 当用户关闭浏览器时,Web Socket 将断开连接。您可以在服务器端处理它。我的意思是,您可以再次通知其他用户或其他内容。

    2. 浏览器加载后需要打开网络套接字连接一次。您可以在浏览器打开时保存此连接。通话后不要断开连接。停止发送数据包。

    我认为这个设计会对你有所帮助。

    一些有用的链接:

    Detecting WebSocket Connects and Disconnects in Spring 4

    Official Issue about disconnecting

    更新(2016 年 3 月 19 日):

    并发会帮助你。这意味着每个新连接都将由新线程处理。因此,它们可以并行工作。当然,线程的数量必须ThreadPool的限制。所以,这类问题已经在Spring Web Socket中解决和实现了。

    如果你对基础理论感兴趣,那么你可以阅读this answer

    【讨论】:

    • 谢谢。我将为用户提供一个打开的 Web 套接字连接,因为当用户关闭浏览器时 Web 套接字将被断开。这些链接真的很有帮助!