Node.js NodeJS-socket.broadcast.to不在嵌套侦听器内发出
我试图将消息发送到特定的房间,一旦客户机触发了“joinedRoom”侦听器,如果我将代码放在joinedRoom侦听器之外,代码就可以正常工作,否则它什么也不做 代码:Node.js NodeJS-socket.broadcast.to不在嵌套侦听器内发出,node.js,sockets,io,Node.js,Sockets,Io,我试图将消息发送到特定的房间,一旦客户机触发了“joinedRoom”侦听器,如果我将代码放在joinedRoom侦听器之外,代码就可以正常工作,否则它什么也不做 代码: app.get('/room/:room/user/:user', function(req, res){ var room = { username: req.params.user, roomname: req.params.room }; res.render('r
app.get('/room/:room/user/:user', function(req, res){
var room = {
username: req.params.user,
roomname: req.params.room
};
res.render('room', room);
});
var users = {};
io.sockets.on('connection', function (socket) {
socket.on('joinedRoom', function(roomData){
socket.username = roomData.username;
socket.room = roomData.roomname;
console.log("Roomname: " + socket.room);
console.log("Username: " + socket.username);
socket.join(socket.room);
socket.broadcast.to(socket.room).emit('newUser', socket.username);
socket.on('disconnect', function(){
socket.broadcast.emit('userLeft', socket.username);
socket.leave(socket.room);
console.log('Connection id: ' + socket.id);
});
});
});
我看到了文档和一些示例代码,一切看起来都是正确的(当涉及到简单的语法时),我是否缺少一些简单的东西
谢谢
编辑
客户端代码:
var socket, roomname, ioRoom;
var socket = io.connect('http://localhost:3000');
socket.on('enterRoom', function(roomname){
console.log("ENTERED ROOM: " + roomname);
});
socket.on('newUser', function(username){
pushUserName(username);
pushUserStatus(username, ' has joined the room <br/>')
});
socket.on('newRoom', function(data){
alert(data)
});
socket.on('userLeft', function(username){
pushUserStatus(username, ' has left the room <br/>')
})
function pushUserName(username){
var el = document.getElementById("username");
el.innerHTML += username + '<br/>';
}
function pushUserStatus(username, message){
var el = document.getElementById("joined");
el.innerHTML += username + message;
}
var套接字、roomname、ioRoom;
var socket=io.connect('http://localhost:3000');
socket.on('enterRoom',函数(roomname){
控制台日志(“进入房间:+roomname”);
});
socket.on('newUser',函数(用户名){
pushUserName(用户名);
pushUserStatus(用户名“已加入文件室”
)
});
socket.on('newRoom',函数(数据){
警报(数据)
});
socket.on('userLeft',函数(用户名){
pushUserStatus(用户名“已离开房间
”)
})
函数pushUserName(用户名){
var el=document.getElementById(“用户名”);
el.innerHTML+=username+'
';
}
函数pushUserStatus(用户名、消息){
var el=document.getElementById(“已加入”);
el.innerHTML+=用户名+消息;
}
在我的情况下似乎有效。分享你的客户代码。你好@mukeshharma我编辑了我的答案!