SocketIO: доступ к экземплярам io и socket в отдельной службе - PullRequest
0 голосов
/ 11 апреля 2020

Я реализовал socket.io на сервере express. Все работает, но я хотел бы избежать длинного скрипта сокета в моем основном файле. Таким образом, я создал отдельный сервис для обработки сокетов logi c в другом файле:

main. js: io.on("connect", SocketManager(io))

socketManager. js: const SocketManager = (io) => {io.on("connect", ()=> do stuff}

Но при этом я могу использовать только экземпляр io. Сокет не определен, что весьма прискорбно, поскольку я должен получить к нему доступ для выполнения конкретных c задач. К сожалению, я не могу просто передать сокет в качестве второго аргумента SocketManager. Как это исправить?

1 Ответ

1 голос
/ 11 апреля 2020

Ваш код игнорирует socket, который передается в событие connect, поэтому вы упускаете возможность использовать фактически созданный сокет.

Чтобы исправить, измените это:

 io.on("connect", SocketManager(io))

на это:

 SocketManager(io)

Все, что вы хотите сделать, это инициализировать ваш менеджер сокетов и передать ему io экземпляр и позвольте ему прослушивать само событие connect.

Затем в своем коде SocketManager вы хотите обратить внимание на аргумент socket, который передается в событие connect. Итак, измените это:

 const SocketManager = (io) => {io.on("connect", ()=> do stuff}

на это:

 const SocketManager = (io) => {
     io.on("connect", (socket) => { 
         // do stuff using newly connected socket in here
     });
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...