我有以下代码(来自 spring websocket 演示应用程序):
stompClient.connect({}, function(frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/user/queue/greeting', function(greeting) {
displayQueueMessage(greeting);
});
function sendName() {
var name = document.getElementById('name').value;
stompClient.send("/app/wsdemo", {}, JSON.stringify({
'name' : name
}));
}
这是对服务器上队列的简单订阅调用,另一个发送调用服务器的方法“sendName()”。
调用 sendName 后,服务器响应 connect 方法提供的回调函数:
function(greeting) {
displayQueueMessage(greeting);
});
我的问题是 - 客户应该从subscribe呼叫等待多长时间才能开始呼叫sendName?我的意思是,我可以在这里看到的潜在问题如下:
i) 客户端首先订阅队列,
ii) 客户端调用 sendName
iii)服务器在收到订阅呼叫之前收到第二个呼叫。
iv) 客户端不会收到来自服务器的响应。
我的问题:
1)这种情况真的是一个问题吗?
2)我怎样才能避免它?
3)我在某处读到,由于 websocket 与 tcp 一起使用,消息的顺序得到了维护,所以我的最后一个问题是 - 对于没有 websocket 支持的客户端,stompJS 的后备功能怎么样?订单也会维持吗?