Spring 带有 sockjs 和 stomp 客户端设计的 websocket

Spring websocket with sockjs and stomp client side design

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

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

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

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

提前致谢

  1. 当用户关闭浏览器时,Web Socket 将断开连接。您可以在服务器端处理它。我的意思是,你可以再通知其他用户什么的。

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

我觉得这个设计对你有帮助。

一些有用的链接:

Detecting WebSocket Connects and Disconnects in Spring 4

Official Issue about disconnecting

更新(2016 年 3 月 19 日):

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

中解决和实现了

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