websocket-rails:服务器发出 http:// 协议;客户端期望 ws:// 协议
Posted
技术标签:
【中文标题】websocket-rails:服务器发出 http:// 协议;客户端期望 ws:// 协议【英文标题】:websocket-rails: Server emits http:// protocol; client expects ws:// protocol 【发布时间】:2016-02-18 14:46:30 【问题描述】:来自Using the javascript Client:
请注意服务器 URL 上缺少协议前缀。不要将 http:// 或 ws:// 添加到您传递给新调度程序的 URL。 WebSocketRails 将为您选择最佳的可用传输并自动添加正确的前缀。
我是第一次使用 WebSocketRails。我在客户端收到此错误:
到 'ws://localhost:3000/websocket' 的 WebSocket 连接失败:在收到握手响应之前连接已关闭
如果我将浏览器导航到http://localhost:3000/websocket
,我会收到我期待的消息。如果我导航到ws
URL,我会得到ERR_DISALLOWED_URL_SCHEME
。所以看起来服务器正在生成消息,但客户端正在尝试错误的协议。
如何强制客户端使用http
协议而不是ws
,或者强制服务器使用ws
而不是http
进行广播?
【问题讨论】:
【参考方案1】:通过深入源码终于找到了答案。构造函数的第二个参数称为use_websockets
,默认为true
。将其设置为false
显然会强制它使用http
而不是ws
。
var dispatcher = new WebSocketRails('localhost:3000/websocket',false);
【讨论】:
我花了一段时间才找到这个答案。否则它对我不起作用。以上是关于websocket-rails:服务器发出 http:// 协议;客户端期望 ws:// 协议的主要内容,如果未能解决你的问题,请参考以下文章
Rails 4 + Websocket-rails + Passenger + Nginx + 负载均衡器
为啥 websocket-rails 需要作为独立服务器启动以支持基于非事件机的 Web 服务器?