Я пытаюсь создать серверное решение, которое периодически передает данные клиенту (без опроса на стороне клиента) через node.js. Соединение должно быть открыто постоянно и всякий раз, когда у сервера появляются новые данные, он подталкивает его к клиенту.node.js - передача данных клиенту - только один клиент может быть подключен?
Вот мой простой пример сценария:
var sys = require('sys'),
http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
sys.puts('Start sending...');
setInterval(function(){
res.write("<script type='text/javascript'>document.write('test<br>')</script>");
}, 10000);
}).listen(8010);
В основном это работает, но это, кажется, что только один клиент одновременно может быть подключен.
Если я открою http://127.0.0.1:8010/
с моим браузером, я вижу каждые 10 секунд новый выход. Но когда я открываю другую вкладку с тем же URL-адресом, она просто загружается навсегда. Только если я закрою первую вкладку, я получаю conent с сервера.
Что мне нужно для того, чтобы обслуживать несколько клиентов?
Это странно. Согласно этой странице, он должен работать: http://blog.nemikor.com/2010/05/21/long-polling-in-nodejs/ – thejh 2010-12-05 20:35:40
@thejh Hm, даже если я попытаюсь вернуть простой ответ с res. end() (без кометы, просто простой запрос-ответ) мне кажется, что клиенты должны ждать предыдущего, чтобы получить контент с сервера. Может быть, это проблема с ОС? Я запускаю node.js 0.3.2 на ubuntu vm-ware. – Max 2010-12-05 20:39:16