【发布时间】:2019-03-02 04:56:22
【问题描述】:
我正在开发一个具有实时聊天功能的在线网站,几天来我一直在尝试设置 socket.io 房间,但我的一个自定义事件没有发出。
我的网站有 2 个路径,/ 和 /play。当有人在/ 路径中填写表格时,网站会将他们重定向到/play 路径。
const io = require('socket.io')(listener);
io.on('connection', socket => {
socket.on('add user', data => { // This event gets emitted when the user submits the form at `/`, in a client-side js file.
socket.username = data.username;
socket.room = data.room;
socket.score = 0;
socket.join(data.room);
io.sockets.in(data.room).emit('user joined', { // This event gets 'handled', in another (not the same one) client-size js file.
username: data.username,
room: data.room
});
});
socket.on('disconnect', function () {
io.sockets.in(socket.room).emit('user left', {
username: socket.username,
room: socket.room
});
socket.leave(socket.room)
});
});
在另一个客户端js文件中:
var socket = io.connect();
let joined = 0;
socket.on('user joined', data => {
joined++;
console.log(joined, data)
const elemental = document.createElement("LI");
const info = document.createTextNode(data.username);
elemental.appendChild(info);
document.getElementById('people').appendChild(info)
});
添加用户事件代码执行得很好,但加入的用户没有.. 我几乎可以肯定它与路径有关。我阅读了 socket.io 命名空间,但似乎它们就像不同类型的房间。 谁能告诉我怎么了?
编辑:我应该提到没有错误出现。
【问题讨论】:
-
你试过了吗:
socket.on('error', console.log);client-side.js? -
刚刚试了一下 - 什么也没发生。
-
好的,我现在看到你的问题了。
标签: javascript node.js socket.io