Я делаю структурный проект с использованием 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;
}
});
});
У кого-нибудь есть пример, чтобы сделать это лучше?