2012-04-18 4 views
3

em-websocket gem을 사용하여 웹 소켓 기반 게임을 개발하기 시작했습니다. Ruby on Rails를 사용하는 em-websocket gem

$> 루비 server.rb]로

을 실행하여 내가 서버를 시작 응용 프로그램을 테스트하고 html 파일 (아무 웹 서버)로 직접 이동 그때 열어 두 개의 브라우저 및 재생을 시작합니다.

하지만 이제 웹 서버, 일부 데이터베이스 테이블, 다른 Ruby on Rails 기반 보석을 추가하고 싶습니다.

내 웹 소켓 서버와 Ruby on Rails 응용 프로그램 간의 통신 방법은 무엇입니까? 동일한 서버에서 실행하고 단일 프로세스로 실행해야합니까? 별도의 서버에서 실행하고 AJAX를 통해 통신 하시겠습니까?

나는 게임이 끝나면 미리 등

감사 데이터베이스를 업데이트 같은 인증 및 기타 기능을 지원해야합니다.

답변

3

여기 있습니다. 또한 레일 프레임 워크에서 루비를 사용하여 웹 소켓 서버 클라이언트를 개발하려고했습니다. 그러나 루비 온 레일은 이벤트 머신과 매우 친숙하지 않습니다. 나는 websocket 클라이언트를 가지고있는 데 어려움을 겪었으므로 기존 lib에서 복사/잘라 내기/붙여 넣기를 할 수 있었으며 다음 두 가지 중요한 문제가 발생했습니다.

엠 - 웹 소켓 서버

https://gist.github.com/ffaf2a8046b795d94ba0 

ROR 친화적 인 웹 소켓 클라이언트

https://gist.github.com/2416740 

스크립트 디렉토리에서 서버 코드는 루비 코드에서 다음과 같은 시작이있다.

# Spawn a new process and run the rake command 
    pid = Process.spawn("ruby", "web_socket_server.rb", 
     "--loglevel=debug", "--logfile=#{Rails.root}/log/websocket.log", 
     :chdir=>"#{Rails.root}/script") #, 
     :out => 'dev/null', :err => 'dev/null' 
    Process.detach pid # Detach the spawned process 

그런 다음 클라이언트는 내가 좋은 ROR 친화적 인 EM-웹 소켓 클라이언트가 원하는이

ws = WebSocketClient.new("ws://127.0.0.1:8099/import") 
Thread.new() do 
    while data = ws.receive() 
    if data =~ /cancel/ 
     ws.send("Cancelling..") 
     exit 
    end 
    end 
end 
ws.close 

처럼 사용할 수 있지만 수 잘 하나 아직 할 수 있습니다.

일단 서버/클라이언트가 잘 작동하면 인증합니다. 데이터베이스 지원은 다른 레일 코드와 크게 다르지 않아야합니다.

3

. 이 젬은 websocket-rails이라고하며, Rails 애플리케이션에서 WebSocket을 사용하기 쉽게 디자인되었습니다. 이제는 안정적인 릴리스입니다.

이 정보가 도움이되었거나 부족한 부분에 대해 의견이 있으면 알려주십시오.

관련 문제