不是真的一个问题,但有点困扰我;启动我的应用后,所有套接字请求(例如/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 - -
。
答案 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 +'!'
});
});
}