socket.io房间每个客户端重复相同的消息
socket.io rooms repeating same message per client
我正在使用房间向客户端发送"私人"消息,它可以工作,但发送的消息与我拥有的客户端数量重复,我相信这是因为我的.on('message')
,因为这仍然会触发每个客户端,但只会向正确的客户端发送(但多次..)
服务器
io.sockets.on('connection', function(socket {
socket.on('join', function(data)
{
console.log('enter');
socket.join(data.user);
});
var rClient = redis.createClient();
rClient.subscribe('messagex');
rClient.on('message', function(channel, message) {
io.in(message.user).emit('messagex', {content: message.content});
});
socket.on('disconnect', function() {
rClient.quit();
});
});
接收方客户端
<script>
var username = prompt("test");
var socket = io.connect('http://localhost:8100');
socket.emit('join', {user: username});
socket.on('messagex', function(data) {
$('#messages').append('<p>' + data.content + '</p>');
});
所以我在接收方页面上有3个客户端(每个客户端都打开了不同的用户/房间),我从发送方发送一条消息,说用户user1,然后我只会在user1客户端上收到消息,但它每次都会收到3条相同的消息,重复的次数似乎就是我的客户端数量。。
尝试这个
subscribe.unsubscribe(channel);
当连接断开时取消订阅
io.sockets.on('connection', function(socket {
socket.on('join', function(data)
{
console.log('enter');
socket.join(data.user);
});
var rClient = redis.createClient();
rClient.subscribe('messagex');
rClient.on('message', function(channel, message) {
io.in(message.user).emit('messagex', {content: message.content});
});
socket.on('disconnect', function() {
rClient.unsubscribe('messagex');
rClient.quit();
});
});
我认为你同时使用两个通道redis和socket.io,你必须制作一个通道,即socket.io只有这样,才不需要制作redis通道意味着当你通过emit/on传输数据时,不需要添加pub/sub方法。
相关文章:
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 为什么我的WebSocket客户端总是在发送消息后重新加载
- 无法从客户端发出套接字消息
- 如何将错误消息从 meteor 服务器传递到客户端
- Socket.IO 客户端库提供“欢迎来到 socket.io”消息
- 服务器无法从客户端获取消息
- 客户端验证 没有验证的属性上的成功消息
- Nodejs-websocket:如何在没有服务器响应的情况下连续发送客户端消息
- C#/ASP-web,ASP:在客户端执行复选框消息框,如果是,则运行服务器端代码
- 在服务器上压缩JSON消息,在客户端解压缩
- 在socket.io中从客户端发送广播消息
- 插入之前的客户端是/否确认消息
- 如何确保客户端已收到通过socket.io发送的消息
- socket.io 客户端,不会向服务器发出消息
- sails 客户端(浏览器)如何侦听从不同端口发出(爆破)的套接字消息
- 有没有办法在事件发生时将消息从服务器发送到客户端
- 无法使用 Firefox 中的信号器向客户端发送消息
- Nodejs,客户端并不总是接收服务器消息
- 使用 cometD 向服务器上的客户端发送消息
- 如何使用推送器通过javascript向客户端发送消息客户端不起作用