Итак, я пытаюсь настроить чат socket.io с expressjs backend и svelte js frontend.
У меня есть собственное пространство имен под названием 'chat', и я создаю новую комнату на Запрос на присоединение.
Я пытался очень внимательно придерживаться официальной документации.
Вот мой код:
Сервер:
const app = express();
const server = app.listen(3002);
log.info("Express server has started on port 3002");
const io = require("socket.io")(server, { path: "/api/express/socket.io" });
const chat = io.of("/chat");
chat.on("connection", socket => {
log.info("New User connected");
socket.on("join", room => {
log.info("New User joined room: " + room);
socket.join(room);
});
socket.on("chat message", data => {
log.info("'chat-message'-Event: ", data);
chat.in(data.room).emit("chat message", {
room: data.room,
msg: data.msg,
user: data.user
});
});
});
Клиент:
let chatSocket
onMount(async () => {
chatSocket = io('https://my.domain.com/chat', {
path: '/api/express/socket.io',
transports: ['websocket'],
})
chatSocket.on('connection', function(socket) {
socket.on('chat message', function(data) {
alert(data.msg)
})
})
chatSocket.emit('join', 'Chat-Room#' + id)
})
const Submit = async e => {
chatSocket.emit('chat message', {
room: 'Chat-Room#' + id,
msg: statusText,
user,
})
}
Судя по выводу консоли сервера, все выглядит нормально. Все события запускаются правильно и записываются на консоль. Но клиенты, похоже, не получают никаких событий «чата» (они отправляют их просто отлично).
Есть идеи, что здесь не так?