Соединение потеряно с response.end в node.js - PullRequest
2 голосов
/ 26 июля 2011

Я использую node.js, чтобы иметь несколько клиентов. Теперь в моем коде я слушаю порт, и каждый раз, когда клиент подключается, я хочу отправить широковещательное сообщение всем остальным клиентам, скажем. Я поднимаю новое событие каждый раз, когда подключается какой-то новый клиент, и отправляю ему ответ. Когда я говорю response.end (), я не могу отправить что-либо этому конкретному клиенту после этого. Тем не менее, браузер продолжает загружаться и ждет ответа. Есть ли вокруг этого без использование socket.io? Я знаю, что у socket.io есть свои применения, но я действительно хотел знать, смогу ли я сделать это без socket.io.

Ответы [ 3 ]

0 голосов
/ 26 июля 2011

Если вы не отправите .end (), браузер будет ждать.Но если вы закроете канал, вы не сможете ничего через него отправить.Итак, используйте socket.io или откройте канал через XHR и оставьте его открытым для каждого клиента для получения сообщений.Это зависит от вас, чтобы адекватно оформить сообщения (реализовать ваш прикладной протокол), хотя.Я думаю, что Пол прав.

0 голосов
/ 26 июля 2011

Попробуйте длинный опрос, что означает, что запрос ajax из браузера «зависнет», пока сервер не сможет что-то отправить обратно.

Как реализовать базовый «длинный опрос»?

Используя nodejs, вы можете легко хранить объекты ответов для клиентов.

0 голосов
/ 26 июля 2011

Я бы сказал, чтобы использовать два канала в вашем клиенте;один для получения обновлений (канал открыт или часто запрашивает обновления) и один для обновления данных.С вашей стороны требуется некоторая работа по реструктуризации клиента и сервера, но я думаю, что использование двух каналов - самый чистый способ решения вашей проблемы.

...