Sails套接字请求日志未定义

时间:2016-06-27 15:14:16

标签: node.js socket.io sails.js

不是真的一个问题,但有点困扰我;启动我的应用后,所有套接字请求(例如/api/articles/subscribe)都会将undefined记录到控制台,如下所示:

GET /api/articles 200 180.463 ms - 27767
GET /api/articles/subscribe undefined - ms - -

第一个请求是HTTP,第二个是socket。

为什么会这样,我该如何解决?

修改 我的路线:

'get /api/articles': 'ArticlesController.index',
'/api/articles/subscribe': 'ArticlesController.subscribe',

我正在使用GET路由(GET /api/articles)来获取JSON格式的所有文章。在查看文章时,我通​​过

订阅了特定的房间
io.socket.get('/api/articles/subscribe', function(data, jwt) { ...

订阅方法本身

subscribe: function(req, res) {
  if(typeof req.user !== 'undefined') {
    sails.sockets.join(req.socket, 'articles');

    return res.ok();
  }
}

订阅效果很好,但我的控制台中始终有GET /api/articles/subscribe undefined - ms - -

1 个答案:

答案 0 :(得分:0)

您是否尝试过以下任何一项?

当您使用获取请求(例如http://www.url.com/?user=randomusername

subscribe: function(req, res) {
  var user = req.param("user");
  if(user !== undefined) {
    sails.sockets.join(req.socket, 'articles');
    return res.ok();
  }
  return res.badRequest();
}

这是您使用发布请求时(例如,如果您发送JSON或类似内容)

subscribe: function(req, res) {
  if(req.body !== undefined && req.body.user !== undefined) {
    sails.sockets.join(req.socket, 'articles');
    return res.ok();
  }
  return res.badRequest();
}

或者您需要像这样使用它(根据Sails reference

subscribe: function(req, res) {
 if (!req.isSocket) {
   return res.badRequest();
 }
 var room = req.param('user');
 sails.sockets.join(req, room, function(err) {
   if (err) {
     return res.serverError(err);
   }
   return res.json({
     message: 'Subscribed to a room called '+ room +'!'
   });
 });
}