我只是尝试使用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?如果是这样的话? 编辑:解决方案:
sails.sockets.emit(sails.sockets.id(req.socket), 'welcome', {custom: 'data here'});
答案 0 :(得分:2)
我遇到了同样的问题。似乎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});
});
现在一切正常!希望它有所帮助!