2011-07-26 7 views
1

私はnode.jsを使い慣れていて、この非常に単純なコードを持っています。私はちょうどサーバーに接続しているユーザーに毎秒こんにちはユーザーと言いたい。私は一度だけHi Userメッセージを参照してくださいNode.jsでの単純なHello Worldの問題

var http = require('http'); 

function newfunc(request, response) { 
    response.writeHead(200, { 
    "Content-Type": "text/plain", 
    "connection" : "keep-alive" 
    }); 
    setInterval(function() { 
    response.write('Hi User\n'); 
    response.end(''); 
    }, 1000); 
} 
http.createServer(newfunc).listen(7070); 

、一度だけ、それを書いているsetIntervalかのように思える: は、ここで私が持っているコードです。 私はこれで何が間違っていますか?

答えて

1

編集:私はコメントで訂正しました。ちょうどresponse.end()コールを削除すると、あなたは期待していたもののように見えるはずです。

元の応答:あなたはこの方法で行うことができないやろうとしている何は... HTTP要求に対する応答は、今までに一度だけ送信されます。response.end()が呼び出されたときに(1回目)。 Commenterは、これは実際には正しくないと指摘しています。つまり、end()が呼び出された後に、応答でデータを送信することはできません。

あなたは、その内容がサーバ側のアクションに基づいて刻々と変化するHTMLページを表示したい場合は、WebSocketをのようなもの(例えばノード互換http://socket.io/ライブラリ)を使用する必要があり、いくつかのクライアント側のJavaScriptますが、どの上記のコードよりもいくらか複雑です。 一般的に、レスポンスに追加するだけでなく、双方向のコミュニケーションを行う以外にも、このタイプのアプローチは好都合です。

+0

これはまったく真実ではなく、 'response.write実際にブラウザにデータをフラッシュし、 'response.end()'は最終的にフラッシュして接続を終了します。しかし、現代のブラウザがなぜこれらの中間的なフラッシュを実際に表示しないのか分かりません。私はいつもこれをやっていましたが、特定のヘッダーが送信される必要があります –

+0

本当に、あなたは正しいです、フィードバックのおかげで! – nicolaskruchten

関連する問題