我使用redis和socket.io:
var io = require('socket.io')(6001);
var Redis = require('ioredis'),
var redis = new Redis();
redis.psubscribe('*');
redis.on('pmessage', function (pattern, channel, message) {
message = JSON.parse(message);
io.sockets.connected[message.data.senderID].broadcast.emit(channel + ':' + message.event, message.data);
});
我收到了这个:
TypeError:无法读取属性'广播'未定义的 在Redis。 (C:\插座\ htdocs中\项目\ server.js:12:46) 在emitThree(events.js:135:13) 在Redis.emit(events.js:216:7) 在Redis.exports.returnReply ...
出了什么问题? console.log(message.data.senderID);
打印套接字ok。感谢..
答案 0 :(得分:1)
首先,请检查您的socket.io版本。 socket.io 1.x.x中仅支持io.sockets.connected[socketid]
。
有更多方法可以获得参考。只需查看console.log(io)。
在2.x中您可以使用io.sockets.sockets[senserID].broadcast.emit
。 //发送给除发件人之外的所有人
Refs this one