как закрыть сервер в socket.io 1.0?

Есть дубликаты этого, но они для предыдущей версии библиотеки. Кажется, код изменился.

Я создаю сокет так:

this.socketLib || (this.socketLib = require('socket.io'));
this.socket = this.socketLib.listen(this.port);

В другом месте объекта у меня есть функция закрытия. Я пробовал следующее, чтобы закрыть сокет:

this.socket.close() # TypeError: Object #<Server> has no method 'close'
this.socket.server.close() #  TypeError: Object #<Server> has no method 'close'
this.socket.server.disconnect() #  TypeError: Cannot call method 'disconnect' of undefined
this.socket.disconnect() # TypeError: Object #<Server> has no method 'disconnect'
this.socket.io.engine.close() # TypeError: Cannot read property 'engine' of undefined

В кодовой базе есть вхождения disconnect, но, похоже, они предназначены для клиента: (ссылка). То же самое для close, в основном. Или я не вижу.

Я отлаживал и копался в объектах и ​​не нашел ничего, что закрывает сервер.

Как закрыть сервер сокетов в новой кодовой базе? Мне нужно отключить его для интеграционного тестирования (1-й тестовый запуск проходит успешно, 2-й запуск получает ошибку EADDRINUSE). Я пытаюсь написать функцию закрытия, которую я могу запустить в моей функции after в мокко. Мои тесты проходят, если я запускаю их без --watch. Это просто несколько последовательных запусков, которые терпят неудачу.


person jcollum    schedule 30.05.2014    source источник
comment
Похоже, что в версии 1.0 по-прежнему отсутствуют многие функции из предыдущих версий.   -  person Denys Séguret    schedule 30.05.2014
comment
@dystroy ой, интересно, почему? думаете есть лучшая альтернатива?   -  person jcollum    schedule 30.05.2014
comment
Я не знаю. А пока я жду, чтобы увидеть, как это обернется в ближайшие дни или недели. Я заморозил миграцию в своих приложениях, пока она не станет более ясной.   -  person Denys Séguret    schedule 30.05.2014
comment
Я только что понизил до 0,9. Я отправлю вопрос для этого.   -  person jcollum    schedule 30.05.2014
comment
Отправлено как проблема (на это должны ответить документы): github.com/Automattic/socket .io/issues/1559   -  person jcollum    schedule 30.05.2014
comment
@jcollum Вы видели мой ответ? Не знаю, это ли то, что вы искали.   -  person cibercitizen1    schedule 01.06.2014


Ответы (1)


Надеюсь, поможет :-)

socket.conn.close ();

Если вы сделаете это, вы получите бесконечное количество "a user connected"

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

io.on('connection', function(socket){
    console.log('a user connected');

    socket.conn.close ();

        ....
});
person cibercitizen1    schedule 31.05.2014
comment
Я посмотрю в будущем. На данный момент я перешел на Socket IO 0.9. - person jcollum; 03.06.2014