Как закрыть соединение «Отправленные сервером события» на сервере? - PullRequest
1 голос
/ 30 июня 2011

Относительно этой спецификации: http://www.w3.org/TR/eventsource/

Как закрыть открытое соединение на сервере? Со стороны клиента это просто, просто позвоните close(), но что мне делать на сервере? Просто убить его?

Ответы [ 4 ]

2 голосов
/ 07 октября 2011

node.js:

http.createServer(function (req, res) {

    //...

    // client closes connection
    res.socket.on('close', function () {
      res.end();
      //...
    });

});

см. Пример реализации сервера SSE в файле node.js:

https://github.com/Yaffle/EventSource/blob/master/nodechat/server.js

2 голосов
/ 04 июня 2012

вы можете изменить тип контента, который отправляет сервер, кроме «text / event-stream».Это закроет источник событий клиентов.

1 голос
/ 16 июля 2011

Полагаю, вы просто закрыли соединение (убили его) Я не видел разговоров о грациозном разъединении.

0 голосов
/ 15 апреля 2019

Внимание : Если вы используете пакет для управления отправленными сервером событиями в файле node.js, прямой вызов response.end() может привести к отправке пакета дополнительных данных после response.end(), и этопроизойдет сбой сервера с ошибкой « WRITE после закрытия ».

Вместо прямого вызова response.end(), мой обходной путь должен был вызвать response.emit('close'), что позволило пакету обработать закрытие.

Документация Node.js для http.ServerResponse> Event.close :

https://nodejs.org/api/http.html#http_event_close_1

...