在SpringBoot websocket中使用的messagingTemplate是什么?

时间:2018-05-03 10:14:27

标签: java spring spring-boot spring-security spring-session

我一直在努力完全掌握WebSocket的概念,我偶然发现了  messagingTemplate.convertAndSendToUser();

messagingTemplate.convertAndSend()

请问这堂课是什么,怎么用?

1 个答案:

答案 0 :(得分:1)

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

  

WebSocket是一种计算机通信协议,通过单个TCP连接提供全双工通信通道。 WebSocket协议在2011年由IETF标准化为RFC 6455,Web IDL中的WebSocket API由W3C标准化。 WebSocket是一种与HTTP不同的TCP协议。

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

  

WebSockets提供客户端和服务器之间的持久连接,双方都可以使用该连接随时开始发送数据。客户端通过称为WebSocket握手的进程建立WebSocket连接。此过程从客户端向服务器发送常规HTTP请求开始。

在典型的基于Spring的Web应用程序中,在HTML(javascript)端,EventSource构造函数接受REST api端点的参数。此REST API端点返回SSEemitter,应用程序保留该SSEmitter的句柄。然后,只要调用SSEmitter上的send方法,就会调用EventSource的onMessage。

跨语言和框架会有类似的沟通方式。

Spring框架中使用webSocket的另一种方式就像基于HTTP的消息代理,它使用MessageSendingOperations,在其上公开convertAndSend方法。再次使用此方法,在传递的转换器的帮助下转换消息,然后将其发送到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

相关问题