281
Q: #18.2-3 | WebSocket之上使用的STOMP,是什么?
A:
282
Q: #18.3-1 | Spring简单的STOMP代理是基于内存的,它模拟了STOMP代理的多项功能 A:
283
Q: #18.3-2 | STOMP代理中继会将STOMP消息的处理委托给一个真正的消息代理
A:
284
Q: #18.3-3 | 默认情况下,STOMP代理中继会假设代理监听localhost的61613端口,并且客户端的username和password均为“guest”。如果你的STOMP代理位于其他的服务器上,或者配置成了不同的客户端凭证,那么我们可以在启用STOMP代理中继的时候,需要配置这些细节信息:
A:
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableStompBrokerRelay("/topic", "/queue")
.setRelayHost("rabbit.someotherserver")
.setRelayPort(62623)
.setClientLogin("marcopolo")
.setClientPasscode("letmein01");
registry.setApplicationDestinationPrefixes("/app", "/foo");
}
285
Q: #18.3.2-1 | Spring能够使用某一个消息转换器将消息负载转换为Java类型
A:
286
Q: #18.3.2-2 | 借助STOMP库,通过JavaScript发送消息
A:
var url = ‘http://' + window.location.host + ‘/stomp/marcopolo’;
var sock = new SockJS(url); //创建SockJS
var stomp = Stomp.over(sock); //创建STOMP客户端
var payload = JSON.stringify({‘message’ : ‘Marco!'});
stomp.connect(‘guest’, ‘guest’, function(frame){ //连接STOMP端点
stomp.send(“/marco”, {}, payload); //发送消息
});
287
Q: #18.3.3-1 | 使用Spring和WebSocket/STOMP的话,该如何与基于浏览器的客户端通信呢?Spring提供了两种发送数据给客户端的方法:
A:
288
Q: #18.3.3-2 | SimpMessagingTemplate能够在应用的任何地方发布消息
A:
package spittr;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.simp.SimpMessageSendingOperations;
import org.springframework.stereotype.Service;
@Service
public class SpittleFeedServiceImpl implements SpittleFeedService{
private SimpMessageSendingOperations messaging;
@Autowired
public SpittleFeedServiceImpl(SimpMessageSendingOperations messaging){ //注入消息模版
this.messaging = messaging;
}
public void broadcastSpittle(Spittle spittle){
messaging.vovertAndSend(“/topic/spittlefeed”, spittle); //发送消息
}
}
289
Q: #18.4-1 | 在使用Spring和STOMP消息功能的时候,我们有三种方式利用认证用户:
A:
290
Q: #18.4-2 | 用户消息流会通过UserDestinationMessageHandler进行处理,它会将消息重路由到某个用户独有的目的地上
A: