node.js経由でデータをクライアントに定期的にプッシュするサーバーサイドのソリューションを作成しようとしています(クライアントサイドのポーリングなし)。接続は永続的に開かれていなければならず、サーバーに新しいデータがあるときは、それをクライアントにプッシュダウンします。node.js - データをクライアントにプッシュ - 1つのクライアントのみを接続できますか?
は、ここに私の簡単なサンプルスクリプトです:
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
@thejh Hm、resで簡単な応答を返そうとしても。 end()(彗星なし、単純なリクエスト - レスポンス)、私は、クライアントがサーバーからコンテンツを取得するために前のものを待たなければならないように思えます。たぶんそれはいくつかのOSの問題ですか?私はubuntuのVM웨어でnode.js 0.3.2を実行しています。 – Max
@Max:あなたはバージョンについて確かですか? githubでも0.3.1が最新のものだと言われています... https://github.com/ry/node – thejh