我有以下代码(来自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);
});

我的问题是-客户从订阅 call 开始等待,直到他可以开始 call sendName 之前,应该等待多长时间?我的意思是,我在这里可以看到的潜在问题如下:

i)客户首先订阅队列,

ii)客户端调用sendName

iii)服务器在收到预订 call 之前先收到第二个 call 。

iv)客户端不会收到来自服务器的响应。

我的问题:

1)那真的是一个问题吗?

2)我如何避免呢?

3)我读过某个地方,因为websocket与tcp一起使用,所以消息的顺序得以保持,所以我的最后一个问题是-对于不支持websocket的客户端,stompJS的后备功能如何?订单也会维持吗?

最佳答案

由于您是在连接阶段预订队列的,因此您只需要等待连接建立就可以向服务器发送请求。

07-28 12:45