javascript - SailsJS,Socket IO 101(切换协议(protocol))永远悬而未决

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

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

请求的 Uri:

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

状态代码:

101 切换协议(protocol)

我四处搜寻,有人说这是由于防火墙造成的。所以我禁用了它们,但这没有帮助。其他一些人建议默认为 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);
        }
}

最佳答案

抱歉,我做了一些摆弄,发现了问题(可能是我犯了一个愚蠢的错误)。

我启用了快捷方式网址,这在 SailsJS 中意味着对 /foo/bar 的请求将映射到 FooController.bar

这工作得很好,直到我添加了如下例所示的通配符路由:

获取/:foo/:bar

这似乎破坏了请求。由于我向 /session/create 发送请求,并依赖快捷路由而没有指定显式路由,因此它由 :foo/:bar 路由解释。

经验教训:禁用快捷方式 URL 并使用正确的路由。

关于javascript - SailsJS,Socket IO 101(切换协议(protocol))永远悬而未决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22585732/

相关文章:

javascript:使用数据uri显示xml流

在 foreach 循环后使用多个 mongoose find 进行 JavaScript Promise

javascript - Bower 与 NPM : Which is better for installing AngularJS?

node.js - 如何访问 socket.io 连接内的 cookie 数据?

iphone - NSURLConnection 在我得到 Error Domain=NSPOSIXErrorDomain Code=57 后不会响应

javascript - 使用 javascript 填充选择框

合并和缩小文件的 JavaScript 许可证信息

javascript - 将字符串转换为日期 Javascript

node.js - express 和 express-generator 有什么区别

node.js - 这是维护用户状态(在线/离线)的标准方法吗?