SpringBoot websocket 中的 messagingTemplate 有什么用?

What is messagingTemplate used for in SpringBoot websocket?

我一直试图完全掌握 WebSocket 的概念,但我迷迷糊糊了 messagingTemplate.convertAndSendToUser();

messagingTemplate.convertAndSend()

请问这是什么 class 以及如何使用它?

来自维基,https://en.wikipedia.org/wiki/WebSocket

WebSocket is a computer communications protocol, providing full-duplex communication channels over a single TCP connection. The WebSocket protocol was standardized by the IETF as RFC 6455 in 2011, and the WebSocket API in Web IDL is being standardized by the W3C. WebSocket is a different TCP protocol from HTTP.

来自http://blog.teamtreehouse.com/an-introduction-to-websockets

WebSockets provide a persistent connection between a client and server that both parties can use to start sending data at any time. The client establishes a WebSocket connection through a process known as the WebSocket handshake. This process starts with the client sending a regular HTTP request to the server.

在典型的基于 spring 的 Web 应用程序中,在 HTML (javascript) 端,EventSource 构造函数采用 REST api 端点的参数。此 REST API 端点 returns 一个 SSEemitter 和应用程序保留该 SSEmitter 的句柄。然后,每当调用 SSEmitter 上的发送方法时,都会调用 EventSource 的 onMessage。

将有类似的跨语言和框架的通信方式。

spring 框架中使用 webSocket 的另一种方式类似于基于 HTTP 的消息代理,通过使用公开了 convertAndSend 方法的 MessageSendingOperations。再次使用此方法,消息在传递的转换器的帮助下进行转换,然后发送到 websocket。

@Autowired
private final MessageSendingOperations<String> messagingTemplate;
....
this.messagingTemplate.convertAndSend(
        "/data", new Random().nextInt(100));

在消费端,订阅者消费消息。

最后,websocket只是一个通信协议。它没有定义诸如 - 如何仅向订阅特定主题的用户发送消息,或如何向特定用户发送消息。还有其他协议,例如:STOMP。您可以参考有用的博客:http://kimrudolph.de/blog/spring-4-websockets-tutorial.