首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用em-websocket gem无法更改到'ws://‘RUBY的连接

使用em-websocket gem无法更改到'ws://‘RUBY的连接
EN

Stack Overflow用户
提问于 2013-02-16 00:02:01
回答 1查看 484关注 0票数 0

我是Ruby新手。

我正在尝试使用WebSocket连接。所以我使用em-websocket gem。我也使用瘦web服务器。我按照例子告诉我的做了所有的事情。所以请帮帮我。

但是服务器不断地返回给我:

代码语言:javascript
复制
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
X-UA-Compatible: IE=Edge
ETag: "7592ed842deb971babc6640ff75207fb"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: f2d12b00aa2eb202b24c309ce0570da0
X-Runtime: 0.008190
Connection: close
Server: thin 1.5.0 codename Knife

客户端请求:

代码语言:javascript
复制
GET /home/webSocket HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: localhost:3000
Origin: http://localhost:3000
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: i6Efmjpxmz2GOFpjduxoyA==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame

客户端代码:

代码语言:javascript
复制
$(document).ready(
    function() {
        ws = new WebSocket("ws://localhost:3000/home/webSocket");
        ws.onopen = function() {
          alert('open');
          ws.send("hello server");
        };
        ws.onmessage = function(evt) { alert(evt.data); };
        ws.onclose = function() { alert('close'); };

    });

下面是服务器端代码:

代码语言:javascript
复制
def webSocket
    require "rubygems"
    require "em-websocket"

    EventMachine.run {
     EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8000) do |ws|
     ws.onopen { |handshake|
       puts "WebSocket opened #{{
          :path => handshake.path,
          :query => handshake.query,
          :origin => handshake.origin,
        }}"

        ws.send "Hello Client!"
      }
      ws.onmessage { |msg|
        ws.send "Pong: #{msg}"
      }
      ws.onclose {
        puts "WebSocket closed"
      }
      ws.onerror { |e|
        puts "Error: #{e.message}"
      }
      end
    }
  end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-16 00:12:19

EventMachine正在侦听端口8000:EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8000),但您正在尝试连接到端口3000:ws = new WebSocket("ws://localhost:3000/home/webSocket");

将其更改为连接到端口8000:

ws = new WebSocket("ws://localhost:8000/home/webSocket");

尽管除非您特别想将/home/webSocket传递给EventMachine,否则不需要额外的路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14898554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档