WebSocket头丢失。

17

我正在Rails 3.2.13中使用'faye'宝石。在开发环境中,我在localhost:9292上运行faye,在localhost:3000上运行我的应用程序。我可以通过curl请求从命令行激活弹出窗口,但我无法从我的应用程序内建立连接。我在控制台中收到的错误是:

WebSocket connection to 'ws://localhost:9292/faye' failed: Error during WebSocket handshake: 'Upgrade' header is missing

我正在尝试在我的application.js文件中为faye定义一个标头:

$(function() {
  var faye = new Faye.Client("http://localhost:9292/faye");
  faye.setHeader("Access-Control-Allow-Origin", "http://localhost:3000");
  faye.subscribe('/messages', function (data) {
  alert(data);
  });
});

这是添加标题的正确方法吗?

我在这里找到了一个类似问题的讨论:https://github.com/faye/faye/issues/222。在这种情况下,错误似乎与ssl设置未加载有关。我检查了我的rack gem的lib目录并发现

def ssl?
  scheme == 'https'
end

这看起来很好。我怎样才能知道设置没有被正确加载?

有关下一步查找的任何线索都将不胜感激。


这是从 Railscast 中学到的吗?我也遇到了同样的问题。 - Mike Lyons
1个回答

35

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接