Есть дубликаты этого, но они для предыдущей версии библиотеки. Кажется, код изменился.
Я создаю сокет так:
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
. Это просто несколько последовательных запусков, которые терпят неудачу.