Pet*_*vic 32 java spring spring-mvc websocket spring-data-rest
我想将状态与所有对特定实体更改感兴趣的客户端同步.所以我想实现以下目标:
HTTP/REST和websockets)websockets主题从技术上讲,我对将spring-data-rest与spring websockets实现混合以实现类似spring-data-websocket的想法感兴趣.
我想到了两种解决方案,实际上两者都是:
REST/HTTP APIwebsocket 控制器(用于对实体的修改调用) 该websocket控制器是这样的:
@Controller
public class EntityAWebSocketController {
@MessageMapping("/EntityA/update")
@SendTo("/topic/EntityA/update")
public EntityA update(EntityA entityA) throws Exception {
// persist,....
return entityA;
}
}
Run Code Online (Sandbox Code Playgroud)
场景1:Websocket API来自REST/HTTP API
规则:
REST/HTTP APIREST/HTTP API针对所有操作的websocket消息也会出现从技术上讲,可以通过以下方式实现:
websocket从控制器弹簧其余数据的事件(即在AfterCreateEvent,AfterSaveEvent,AfterLinkSaveEvent,AfterDeleteEvent)仍然解决方案对我来说似乎很难过,因为我需要去:
HTTP请求 - >服务器(弹簧数据休息控制器)websocket消息 - > Spring websocket控制器websocket通过主题消息 - >所有对该主题感兴趣的客户端HTTP响应 - >客户端A.场景2:Websocket API独立于REST API
规则:
REST/HTTP API用于非修改操作REST/HTTP API适用于非修改操作websocket为所有修改操作发送消息websocket 消息仅发送到客户端以进行所有修改操作好吧,如果没有其他的想法出现,我会选择后一个,但是,如果我能以某种方式生成C(R)UD通过暴露的方法websockets,就像spring-data-websockets一样,只处理中的路径,那将会很棒.我的实施.
因为我觉得我必须为我的所有实体手动公开(通过*WebSocketControllers)所有CUD方法.而我可能太懒了.
想法?
小智 1
场景 2 在最后一步中讨论了单个客户端。但我认为您的要求是针对一个主题,因为您想要多个客户端。如果我想完成 2 来满足您所声明的要求,那么您可能需要维护一个客户端列表并实现您自己的队列,或者使用 ForkJoinPool 向侦听 WebSocket 的所有客户端发送消息。话虽如此,A topic在这里肯定更优雅,但整体看起来太复杂了不同的接口
对于从客户端到服务器的所有消息,只需使用简单的有线协议并使用集合来参数化,它可以是 RParam1.......
在服务器上,您需要一个控制器将这些映射到不同的请求(和操作)。不知怎的,看起来并没有太多的工作。希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
3741 次 |
| 最近记录: |