gpt4 book ai didi

node.js - socket.io 仅向 socket.on ('connect' 之外的发送者发送

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:32 25 4
gpt4 key购买 nike

是否可以在socket.on('connect')事件之外仅向发送者全局发送?我正在寻找类似 socket.broadcast.to().emit() 的东西,我可以在 app.post 方法中使用它,它不在 connect 方法中,所以我不能只使用 socket.emit

app.post('/room', function(req, res) {   
io.sockets.emit('something');

});

“某事”我只想发送给 SENDER

我的代码:

socket_id;

app.post('/room', function(req, res) {
if (req.body.user == ''){
io.sockets.socket(socket_id).emit('usernameError', 'Type your username');
}
else if (users[req.body.user] !== undefined ) {
io.sockets.socket(socket_id).emit('usernameError', 'Username exists.');
}
else{
users[req.body.user] = req.body.user;
user = req.body.user;
io.sockets.emit('newUser', user+' join to the room');
res.render('room');
}
});

io.sockets.on('connection', function(socket) {
socket.username = user;
socket.join('room1');
socket.id = socket_id;
});

最佳答案

据我了解,您想向刚刚访问 /room 页面的用户发送“某些内容”,对吧?
如果是这样,您不能在 app.post 方法中执行此操作,因为此代码将在客户端收到 HTML 代码之前执行,因此客户端和服务器之间的握手将不会建立。

我认为最好的解决方案是仅在 /room 页面上的客户端执行以下代码:

var socket = io.connect('/');   //your socket.io connection (may be different)
socket.on('something', function(data) {
console.log(data);
});
socket.emit('i_am_room_page'); //tell server we are on /room page

在服务器上:

io.sockets.on('connection', function(socket) {
socket.on('i_am_room_page', function(data) {
socket.emit('something', {your: 'data'});
});
});

希望这有帮助

关于node.js - socket.io 仅向 socket.on ('connect' 之外的发送者发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21686628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com