Структура проекта Socket.io - PullRequest
0 голосов
/ 01 ноября 2019

Я делаю структурный проект с использованием socket.io, я сделал пример, но мне не нравится подключение двух событий.

Cliente:

Отправить пространство имен для подключения клиента.

    <script>
      const socket = io('ws://localhost:3000/chat', {
        transports: ['websocket'],
        query: {
            namespace: "chat"
        }
      });

      socket.emit('send-message','Message to send');
    </script>

Servidor:

    const Server = require('socket.io');
    const chatService = require('./functions/chat/service');

    //Run server
    const io = new Server(3000, {
        transports: ['websocket'],
        serveClient: false
    });

    io.on('connect', (socket) => {

        let resource = socket.handshake.query.namespace;
        //Event to connect namespace
        io.of(resource).on('connect', (socket) => {
            //Execute a function for each namespace and event
            switch(resource){
                case "chat":
                    socket.on('send-message', async (data) => {
                        await chatService.sendMessage(io, socket, data);
                    });
                    socket.on('update-message', async (data) => {
                        await chatService.updateMessage(io, socket, data);
                    });
                    break;
            }
        });

    });

У кого-нибудь есть пример, чтобы сделать это лучше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...