この仕様について: http://www.w3.org/TR/eventsource/
サーバー上で開いている接続を閉じるにはどうすればよいですか? クライアント側は簡単で、 を呼び出すだけclose()
ですが、サーバーではどうすればよいですか? 殺すだけ?
この仕様について: http://www.w3.org/TR/eventsource/
サーバー上で開いている接続を閉じるにはどうすればよいですか? クライアント側は簡単で、 を呼び出すだけclose()
ですが、サーバーではどうすればよいですか? 殺すだけ?
ノード.js:
http.createServer(function (req, res) {
//...
// client closes connection
res.socket.on('close', function () {
res.end();
//...
});
});
node.js での SSE サーバーの実装の例を参照してください。
https://github.com/Yaffle/EventSource/blob/master/nodechat/server.js
「text/event-stream」以外にサーバーが送信する content-type を変更できます。これにより、クライアントのイベントソースが閉じます。
接続を閉じる(殺す)だけだと思います。グレースフル ディスコネクトについての話は見たことがありません。
res.end() は、接続がクライアント側から閉じられており、後で ERR_STREAM_WRITE_AFTER_END エラーが発生する可能性がある場合に使用する方法ではありません。このような場合は、ルートに追加したロジックを元に戻した方がよいでしょう。