我一直在使用SailsJS开发应用程序。直到几个小时前,当我没有得到socket.get()
的回复时,一切都运转良好。我检查了chrome控制台中的网络选项卡,发现上一个请求仍处于待处理状态。
Uri请求:
ws://localhost:1337/socket.io/1/websocket/FBcw-Q4H3PLFXcIlb0GB
状态代码:
101 Switching Protocols
我已经四处寻找,有些人一直在说这是防火墙造成的。所以我禁用了它们,但这没有帮助。其他一些人建议默认为 xhr民意调查所以我这样做但是同样的事情发生了,请求
http://localhost:1337/socket.io/1/xhr-polling/4_gAWYQJtKdXhDFEcxHe?t=1395536371612
永远等待。
响应此处的评论是请求事件:
socket.get('/session/create', {
username: username,
password: password
}, function (response) {
console.log(response) // null
});
永远不会返回响应,并且在回调中始终为null。我甚至试图立即发送回复,但也没有回复。示例如下:
// Session controller
module.exports = {
create: function (req, res) {
return res.json({foo: 'bar'}, 200);
}
}
答案 0 :(得分:3)
抱歉,我做了一些小事,我发现了这个问题(我可能犯了一个愚蠢的错误)。
我启用了快捷网址,在SailsJS中意味着对 / foo / bar 的请求将映射到 FooController.bar
这个工作正常,直到我添加了一个通配符路由,如下例所示:
get /:foo/:bar
这似乎打破了请求。由于我向/session/create
发送请求并依赖快捷路由而未指定显式路由,因此:foo/:bar
路由解释了该请求。
获得的经验教训:禁用快捷方式网址并使用正确的路由。