websocket-rails:服务器发出http:// protocol;客户期望ws://协议

时间:2016-02-18 14:46:31

标签: websocket websocket-rails

来自Using the JavaScript Client

  

请注意服务器URL上缺少协议前缀。不要将http://或ws://添加到传递给新调度程序的URL。 WebSocketRails将为您选择最佳的可用传输并自动添加正确的前缀。

我第一次使用WebSocketRails。我在客户端收到此错误:

  

WebSocket连接到' ws:// localhost:3000 / websocket'失败:在收到握手响应之前关闭连接

如果我将浏览器导航到http://localhost:3000/websocket,我会收到我期待的消息。如果我导航到ws网址,我会收到ERR_DISALLOWED_URL_SCHEME。所以看起来服务器正在生成消息,但客户端正在尝试错误的协议。

如何强制客户端使用http协议而非ws,或强制服务器使用ws而不是http广播?

1 个答案:

答案 0 :(得分:2)

最后通过挖掘源代码找到了答案。构造函数的第二个参数称为use_websockets,默认为true。将其设置为false显然会强制它使用http代替ws

var dispatcher = new WebSocketRails('localhost:3000/websocket',false);