У меня есть следующий код (из демонстрационного приложения 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 ответ сервера на функцию обратного вызова, предоставленную в методе подключения:
function(greeting) {
displayQueueMessage(greeting);
});
Мой вопрос: как "долго" клиент должен ждать от вызова subscribe, пока он не сможет начать вызов sendName? Я имею в виду, что потенциальная проблема, которую я вижу здесь, заключается в следующем:
i) клиент первым подписывается на очередь,
ii) клиент вызывает sendName
iii) сервер получает второй вызов до того, как он получит вызов подписки.
iv) ответ от сервера не будет получен клиентом.
мои вопросы:
1) этот сценарий действительно является проблемой?
2) как этого избежать?
3) я где-то читал, что, поскольку websocket работает с tcp, порядок сообщений сохраняется, поэтому мой последний вопрос: как насчет резервной возможности stompJS для клиентов без поддержки websocket? порядок тоже будет поддерживаться?