Socket.IO TypeError:无法读取属性' broadcast'未定义的

时间:2017-10-21 11:44:49

标签: jquery node.js laravel socket.io

我使用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。感谢..

1 个答案:

答案 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