3

NodeJSを使用して長いポーリング手法を実装しようとしています。

この基本的なコードをサーバーにデプロイしています。

http = require('http');

function onRequest(request, response) {
    console.log('onRequest reached');
}

http.createServer(onRequest).listen(8080);
console.log('Server has started.');

localhost:8080を要求すると、onRequestが発生します。この接続が有効な場合、2番目のタブで同じページをリクエストしましたが、onRequestが起動されません。ただし、別のブラウザから同じページをリクエストすると、最初の接続がまだ「ロングポーリング」されている間にonRequestが発生します。

ブラウザに制限はありますか?どのようにそしてなぜこれが起こるのですか?どうすればこれを回避できますか?

ところで。長いポーリングチャットと通知システムを実装しようとしています。実際には、リクエストはAJAX呼び出しで行う必要があります。

4

1 に答える 1

3

ブラウザが応答を待っている可能性があります。すぐにヘッダーだけを送信してみてください。

function onRequest(request, response) {
    response.writeHead(200, {'Content-Type': 'text/html'});
    console.log('onRequest reached');
}

別のヒント:長いポーリングを使用する場合は、サーバー送信イベントを調べることをお勧めします。これにはかなり幅広いブラウザサポートがあり、古いブラウザ用のポリフィルもあります。これは、node.jsサーバーからイベントを送信する方法を示すCoffeeScriptの例です。

于 2012-07-06T11:49:16.427 に答える