如何确保在Spring中同步请求中传递的websocket消息?

Анд*_*лов 10 java spring websocket

实际上我通过编写"非常自定义"处理解决了这个问题,但我对它并不满意,我认为应该采用透明的方式来实现.

故事是这样的:

  1. "一个"用户来到并注册一些事件以便使用
    websocket

  2. "另一个"用户来到这个事件.此事件的更多内容仅针对特定用户"One",仅适用于他.我们在DB中进行了一些更改(事务处于打开状态).一个重要的事情是"另一个"用户可能不完全是"用户",而是另一个后端发送HTTP请求,甚至是内部计划任务.

  3. 如果某些消息尚未传递和处理,我们需要回滚数据并返回"另一个"用户的错误响应.

当然,首先我们去阅读http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html

好的,让我们从简单开始并扩展TextWebSocketHandler存储websocket会话,并使用它将"Another"用户的消息发送到"One".问题是它没有验证传递的消息 - 会话可能会过期(甚至浏览器可能会冻结等等),我们也没有抛出任何异常.

好的,然后我们进一步阅读文档并满足"STOMP Over WebSocket Messaging Architecture",看起来我们可以进行此验证,但这个API看起来像是从websocket到websocket的交互.在我的情况下,事件应该不是来自websocket请求.

有类似的问题:

Web Socket - Spring:确认收到的消息

如何确保websockets的可靠消息传递?

但他们可以对STOMP感到满意,或者像Cettia项目那样提供异步API http://cettia.io/projects/cettia-java-server/1.0.0-Beta1/

所以问题是:是否有现成的实现/库/等.使用同步API透明验证消息传递?