Faye:即使套接字打开,工作和通过CURL响应数据,也无法在浏览器中发送GET消息

时间:2012-10-11 23:01:43

标签: ruby-on-rails websocket thin faye

所以我的websocket正常开放给faye,我正在使用nginx_tcp_proxy模块。当我跑一个卷发时看起来不错:

$ curl http://now.2u.fm:9200/faye\?message\=%5B%7B%22channel%22%3A%22%2Fmeta%2Fhandshake%22%2C%22version%22%3A%221.0%22%2C%22supportedConnectionTypes%22%3A%5B%22callback-polling%22%5D%2C%22id%22%3A%221%22%7D%5D\&jsonp\=__jsonp6__
__jsonp6__([{"id":"1","channel":"/meta/handshake","successful":true,"version":"1.0","supportedConnectionTypes":["long-polling","cross-origin-long-polling","callback-polling","websocket","eventsource","in-process"],"clientId":"jls0srprht51xb368yrojft3h4drgu0","advice":{"reconnect":"retry","interval":0,"timeout":45000}}]);#

使用-I标志卷曲

HTTP/1.1 200 OK
...
Connection: close

但是当我的网站尝试将其作为GET(没有错误代码)时,我收到失败的GET请求:

enter image description here

编辑:我注意到它刚才说“切换协议”了!

enter image description here

当我尝试直接在浏览器中点击the url时。

我的直觉说,“嘿,那是因为你有一个tcp连接打开而不是一个http!”,但是然后是使用GET的private_pub?但是就我所知,GET请求对TCP来说还不错,而且我做错了。

1 个答案:

答案 0 :(得分:0)

我发现问题是Faye需要能够打开套接字并使用http。因为private_pub假设您在同一个域/端口上同时执行这两个操作,所以使用tcp模块是不可能的,而不必修改private_pub和它正在加载的faye扩展以使用正确的端口。

最后我使用了HAProxy,因为它设置起来要简单得多,并且不需要修改私人酒吧。