Нахождение сложного описания этой проблемы - поэтому, пожалуйста, отредактируйте, если вы знаете более релевантные термины.Работа с контекстом ответов сервера в веб-приложениях реального времени
Я создаю веб-приложение, которое по существу использует Redis (PubSub) + Node.js + Socket.IO в качестве сервера распространения.
У меня двусторонняя связь, без проблем, но мне нужно иметь возможность сделать запрос на сервер от клиента (асинхронно) и обработать ответ, продолжая обрабатывать другие нерелевантные ответы, которые могут возникнуть раньше Это.
Это то, что я до сих пор, но я не особенно доволен этим подходом:
сервера
// Lots of other code
redis.psubscribe('*');
redis.on("pmessage", function(pattern, channel, message) {
// broadcast
});
io.on('connection', function(client) {
client.on('message', function(message) {
switch(message.method) {
// call relevant function
}
});
});
function object_exists(object_id) {
// do stuff to check object exists
client.send({method: 'object_exists', value: object_exists});
}
Client
var call = Array();
$(document).ready(function() {
socket.connect();
socket.on("message", function(obj){
console.log(obj);
call[obj.method](obj.value);
});
});
function object_exists(object_id) {
socket.send({method: 'object_exists', value: object_id});
// Set a function to be called when the next server message with the 'object_exists' method is received.
call['object_exists'] = function(value) {
if(value) {
// object does exist
}
}
}
Tl; др : Мне нужно «спросить» сервер, а затем обработать ответ с помощью Socket.IO.
Спасибо, это в основном, как я это сделал. – Tom
Да, извините, я не видел, что это был старый вопрос, пока я не ответил! – jslatts