SailsJS,Socket IO 101(交换协议)永远待定

时间:2014-03-23 01:01:31

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

我一直在使用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);
        }
}

1 个答案:

答案 0 :(得分:3)

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

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

这个工作正常,直到我添加了一个通配符路由,如下例所示:

get /:foo/:bar

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

获得的经验教训:禁用快捷方式网址并使用正确的路由。