id未定义(sails.socket.emit)

时间:2015-02-18 15:47:14

标签: node.js sockets undefined sails.js

我只是尝试使用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'});

1 个答案:

答案 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});
});

现在一切正常!希望它有所帮助!