9

この仕様について: http://www.w3.org/TR/eventsource/

サーバー上で開いている接続を閉じるにはどうすればよいですか? クライアント側は簡単で、 を呼び出すだけclose()ですが、サーバーではどうすればよいですか? 殺すだけ?

4

6 に答える 6

4

ノード.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

于 2011-10-07T10:02:32.507 に答える
1

「text/event-stream」以外にサーバーが送信する content-type を変更できます。これにより、クライアントのイベントソースが閉じます。

于 2012-06-04T09:56:11.057 に答える
1

接続を閉じる(殺す)だけだと思います。グレースフル ディスコネクトについての話は見たことがありません。

于 2011-07-16T09:58:25.420 に答える
0

res.end() は、接続がクライアント側から閉じられており、後で ERR_STREAM_WRITE_AFTER_END エラーが発生する可能性がある場合に使用する方法ではありません。このような場合は、ルートに追加したロジックを元に戻した方がよいでしょう。

Node.JS Server Sent Events: Route continue to run after res.end() 結果の ERR_STREAM_WRITE_AFTER_END エラー に例があります。

于 2020-01-21T00:04:10.073 に答える