SailsJS,套接字IO 101(交换协议)永久挂起

我一直在使用SailsJS来开发一个应用程序。 一切都一直工作正常,直到几个小时前,我没有得到socket.get()响应。 我在Chrome控制台中检查了networking选项卡,发现最后一个请求仍在等待处理。

Uri请求:

ws://localhost:1337/socket.io/1/websocket/FBcw-Q4H3PLFXcIlb0GB

状态码:

101 Switching Protocols

我已经search过,有些人一直在说这是由于防火墙。 所以我禁用了他们,但是这并没有帮助。 有些人build议默认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 }); 

响应永远不会被返回,并且在callback中始终为空。 我甚至尝试马上发送一个回应,也没有返回。 示例如下:

 // Session controller module.exports = { create: function (req, res) { return res.json({foo: 'bar'}, 200); } } 

对不起,我已经做了一些摆弄,我发现这个问题(可能是我的一个愚蠢的错误)。

我有启用快捷url,在SailsJS意味着/ foo / bar的请求将映射到FooController.bar

这工作得很好,直到我像下面的例子添加了通配符路由:

get /:foo/:bar

这似乎已经打破了这个要求。 因为我发送了一个请求到/session/create并且依赖于快捷路由而没有指定明确的路由,所以它被:foo/:bar路由解释。

获得的经验:禁用快捷url并使用正确的路由。