Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring websocket-从websocket服务器外部向用户目的地发送消息 用例_Java_Spring_Stomp_Spring Websocket - Fatal编程技术网

Java Spring websocket-从websocket服务器外部向用户目的地发送消息 用例

Java Spring websocket-从websocket服务器外部向用户目的地发送消息 用例,java,spring,stomp,spring-websocket,Java,Spring,Stomp,Spring Websocket,我有一个tomcat REST应用程序,它作为API网关连接到许多其他应用程序。我想向tomcat应用程序添加websocket支持,以便为每个用户会话发送通知更新。这些通知更新将来自其他应用程序之一,这些应用程序没有用户会话上下文,但知道应该向哪个用户发送更新(如果该用户当前有一个打开的会话) 所以说得很清楚——我只需要一个websocket服务器和一个(或多个)应用程序,它们只生成要发送到用户会话的消息 我的研究 我很清楚,我必须使用with STOMP作为子策略。我们已经使用兔子进行交流,

我有一个tomcat REST应用程序,它作为API网关连接到许多其他应用程序。我想向tomcat应用程序添加websocket支持,以便为每个用户会话发送通知更新。这些通知更新将来自其他应用程序之一,这些应用程序没有用户会话上下文,但知道应该向哪个用户发送更新(如果该用户当前有一个打开的会话)

所以说得很清楚——我只需要一个websocket服务器和一个(或多个)应用程序,它们只生成要发送到用户会话的消息

我的研究 我很清楚,我必须使用with STOMP作为子策略。我们已经使用兔子进行交流,所以它是显而易见的选择

文档中指出,“STOMP代理中继还为每个连接的WebSocket客户端创建单独的TCP连接。”它是每个用户会话的单独连接,而不是每个用户。此外,当发送端位于同一应用程序(负责处理用户会话的应用程序)内时,每个会话都会创建一个单独的队列。我假设我的其他想要发送消息的应用程序必须知道当前活动的会话,并将消息发送到代理的相应队列

我找到的可能的解决方案 这在春天,吉拉或多或少与我的问题有关。可能的解决方案之一是实现分布式UserSessionRegistry

另一种方法是使用提供的选项来解决同一问题,即启用具有未解析用户目的地的广播消息。但在这种情况下,我的所有应用程序都将接收这些广播消息。我只希望前面提到的API网关应用程序接收它们(它将是唯一一个向客户端公开并打开和关闭用户会话的应用程序)

那么,解决这个问题的正确方法是什么

我想向tomcat应用程序添加websocket支持

“tomcat应用程序”是tomcat REST API网关吗?我不明白为什么需要一个功能齐全的经纪人,或者至少看起来不相关


发起更新的应用程序服务器需要某种方式通知网关/websocket服务器,而网关/websocket服务器将向订阅者广播消息。网关/webSocket可以通过HTTP接受调用,即一种普通的
@RequestMapping
方法,通过
simpMessageTemplate
广播处理请求

嗯,我认为功能齐全的代理是相关的,因为我希望使用它从其他应用程序发送更新。但是你是对的-我需要它来解决与我的问题无关的问题(例如,支持ACK/NACK帧)。最后我想到了你的建议,谢谢你的确认。