id没有定义(sails.socket.emit)

我只是试图使用sails.socket.emit()发送消息,我得到这个:

error: Sending 500 ("Server Error") response: Error (SAILS:HOOK:SOCKETS:USAGE):: `sails.sockets.get()` cannot lookup socket w/o an id (got: `undefined`) 

控制器中的代码:

 sayHiToFriend: function(req, res) { var friendId = req.param('id'); sails.sockets.emit(friendId, 'privateMessage', {from: req.session.userId, msg: 'Hi!'}); res.json({ message: 'Message sent!' }); } 

和客户端:

 io.socket.get('/user/sayHiToFriend', function serverSays(err,users){ console.log('with headers: ', JWR.headers); console.log('and with status code: ', JWR.statusCode);*/ if (err) console.log(err) console.log(JSON.stringify(users)); }); 

我是否必须将id作为数据传递给io.socket.get? 如果这样怎么样? 编辑:解决scheme:

  sails.sockets.emit(sails.sockets.id(req.socket), 'welcome', {custom: 'data here'}); 

我有同样的问题。 看起来Sails.js有一些内部问题或其他我们无法控制的东西…在我的情况下,几个小时前,所有的工作都很好,现在它给出了这个错误。 我解决了它只是用lodash压缩ID的数组:

 User.findOne({'id': req.body.id}, function(error, user) { var subscribers = _.compact(User.subscribers(user)); sails.sockets.emit(subscribers, "notification", {msg: req.body.msg}); }); 

现在一切工作正常! 希望能帮助到你!