2012-04-20 6 views
1

저는이 문제에 대해 정말 안타깝습니다.ruby ​​: websocket 서버와 websocket 클라이언트가 작동하지 않습니다

난 그냥 루비 websocket 서버와 루비 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 클라이언트 - 서버가 어떤 변화를 겪고 있는지 조사하고 싶을 것입니다.

참고 :이 기능은 우분투의 Ruby 1.9.2에서 저에게 효과적 이었지만 잘 돌아가지만 다시는 그렇지 않을 수도 있습니다.

+0

답장을 보내 주셔서 감사합니다. 매우 유용합니다. 이제 작동합니다. – user1346968

+0

em-http-request에 일부 종속성 문제가 있습니다. – user1346968