2012-04-20 22 views
1

私はこのための本当に初心者です。しかし、私はこの問題の何が間違っているのか理解できません。ruby​​:websocketサーバとwebsocketクライアントは動作しません

私は、ruby websocketサーバーとruby websocketクライアントの実装について、どこかオンラインからコピーしました。私はまた、Windows XPにルビー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}" 
    } 
} 

クライアント側は常に "おっと" スピンアウト。つまり、エラーが発生したことを意味します。

誰でも私にこれのための手がかりを与えることができますか?私は感謝します。

+0

手がかりを尋ねたので、これをサーバーに追加してください。 'ws.onerror {| error | pエラー} '、クライアント要求を行い、サーバが出したものを読み込みます。 – forforf

答えて

2

実際には、コードを少し深く掘り下げても問題ありませんが、問題は最新バージョンの依存関係で変更されています。

アンインストールを現在の宝石

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でうまくいきましたが、うまくいくはずですが、もう一度やり直す必要があります。

+0

ご返信ありがとうございます。非常に便利です。今それは動作します。 – user1346968

+0

em-http-requestにはいくつかの依存関係の問題があります。 – user1346968

関連する問題