我一直在努力完全掌握WebSocket的概念,我偶然发现了
messagingTemplate.convertAndSendToUser();
和
messagingTemplate.convertAndSend()
请问这堂课是什么,怎么用?
答案 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。