Spring WebSocket使用SockJS和STOMP客户端端设计

4

我正在将Spring WebSockets集成到Web应用程序中,并希望将其用于两个使用ajax请求时间较长的调用。根据我的理解,我看到有不同的设计选择,关于如何处理这个问题。我考虑以下几点,请告诉我哪种选项最好,为什么?

1)在用户通过SockJS登录应用程序时打开Socket连接,并使用此连接发送消息并订阅我要进行的两个调用。我对这个设计的疑问是:如果用户只是关闭浏览器,那么套接字连接会保持打开吗?

2)为每个调用打开一个Socket连接,并在接收到消息后关闭它,但这会占用大量资源来建立每次连接。

我对Spring-WebSocket、SockJS和STOMP等方面都很新,请告诉我我的任何理解是否错误?

提前感谢您。

1个回答

6
  1. 当用户关闭浏览器时,Web Socket 将会断开连接。您可以在服务器端处理它。也就是说,您可以通知其他用户或者执行其他操作。

  2. 在浏览器加载后,您需要打开一次 Web Socket 连接。您可以在浏览器打开的时间内保持此连接。不要在调用后断开连接。只需停止发送数据包即可。

我认为这种设计将有所帮助。

一些有用的链接:

检测 Spring 4 中 WebSocket 的连接和断开

关于断开连接的官方问题

更新(2016 年 3 月 19 日):

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

如果您对基本理论感兴趣,那么您可以阅读这个答案


谢谢。我将为用户使用一个开放的Web套接字连接,因为当用户关闭浏览器时,Web套接字将被断开连接。这些链接真的很有帮助! - Nikhil Das Nomula

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接