1

我是一个真正的新手。但是,我无法弄清楚这个问题有什么问题。

我刚刚从网上某处复制了有关 ruby​​ websocket 服务器和 ruby​​ websocket 客户端实现的信息。我还在我的 windows xp 上安装了 ruby​​ 1.93。一切看起来都很好,但 websocket 客户端并不能很好地工作。

服务器端代码:

equire 'em-websocket'

EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8080) do |ws|
  ws.onopen    { ws.send "Hello Client!"}
  ws.onmessage { |msg| ws.send "Pong: #{msg}" }
  ws.onclose   { puts "WebSocket closed" }
end

客户端代码:

require 'eventmachine'
require 'em-http-request'

EventMachine.run {
  http = EventMachine::HttpRequest.new("ws://localhost:8080").get :timeout => 0
  http.errback { puts "oops" }
  http.callback {
      puts "WebSocket connected!"
      http.send("Hello client")
  }

  http.stream { |msg|
      puts "Recieved: #{msg}"
      http.send "Pong: #{msg}"
  }
}

客户端总是发出“oops”。这意味着发生了错误。

有人可以给我任何线索吗?我很感激。

4

1 回答 1

2

实际上,深入挖掘代码是可以的,问题是最新版本的依赖项发生了变化。修复步骤:

卸载当前的 gem

 gem uninstall em-http-request --version="1.0.2"  
 gem uninstall em-socksify --version "=0.2.0"     1.0.0.beta.4
 gem uninstall eventmachine --version "=1.0.0.beta.4"

然后安装这些 gem

 gem install em-http-request --version "=0.3"
 gem install em-socksify --version "=0.1"
 gem install eventmachine --version "0.12.10"

事情应该会奏效。如果这是针对某种类型的严肃项目,而不是学习,您将需要调查哪些更改正在破坏 websocket 客户端-服务器。

注意:这对我在 Ubuntu 上使用 Ruby 1.9.2 有效,它应该对你有效,但又可能不行。

于 2012-04-20T23:23:45.047 回答