我正在使用Rails 3.2.13的'faye'宝石。在开发中,我在localhost:9292上运行faye,在localhost:3000上运行我的应用程序。我可以通过命令行的curl请求激活弹出窗口,但我无法在我的应用程序中建立连接。我在控制台中遇到的错误是:
与'ws:// localhost:9292 / faye'的WebSocket连接失败:WebSocket握手期间出错:缺少“升级”标题
我正在尝试在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设置有关。我检查了我的机架gem的lib目录并找到了
def ssl?
scheme == 'https'
end
这似乎很好。如何知道设置是否未正确加载?
非常感谢任何有关下一步观看的线索。
答案 0 :(得分:35)
在跟随Ryan Bates的railscast时遇到了同样的问题:http://railscasts.com/episodes/260-messaging-with-faye
Faye Web套接字服务器需要适配器才能在Thin Web服务器上运行并发送升级标头。
将此行添加到您的Faye rackup(.ru
)文件中:
Faye::WebSocket.load_adapter('thin')
我在这里找到了这个解决方案:https://github.com/ryanb/private_pub/issues/39#issuecomment-4225647