弹簧websocket与sockjs和stomp客户端设计

时间:2015-12-15 18:55:58

标签: java web stomp spring-websocket sockjs

我正在将spring web-socket集成到Web应用程序中。而且我想将这个用于两次在ajax中花费很长时间的调用。根据我的理解,我看到有关于如何进行此操作的不同设计选择。我正在考虑以下问题,你能告诉我什么是最好的选择,如果是的话,为什么

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

2)为每个呼叫打开一个套接字连接,并在收到消息后关闭它,但这里每次都需要很多资源才能建立连接。

我对spring-websocket,SockJS和STOMP的东西很新,所以让我知道我的理解在任何地方都是错的?

提前致谢

1 个答案:

答案 0 :(得分:6)

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

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

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

    一些有用的链接:

    Detecting WebSocket Connects and Disconnects in Spring 4

    Official Issue about disconnecting

    更新(2016年3月19日):

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

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