我是一个真正的新手,但是,我无法弄清楚这个问题出了什么问题。
我只是从网上的某个地方复制了一个关于 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}"
}
}
客户端总是旋转出"哎呀"。这意味着他们的错误发生了。
谁能给我任何线索?我很感激。
,深入挖掘您的代码很好,问题是最新版本的依赖项发生了一些变化。修复步骤:
卸载当前 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 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 上对我有用,它应该适合你,但同样可能不适合。