2012-04-18 3 views
3

Я начал разработку игры на основе веб-сокетов, используя драгоценный камень em-websocket.em-websocket gem с Ruby on Rails

Для тестирования приложения я запустить сервер, запустив

$> рубин server.rb

, а затем я просто открыть два браузера, подаваемые непосредственно в HTML-файл (без веб-сервера) и начать играть.

Но теперь я хочу добавить веб-сервер, некоторые таблицы базы данных, другие камни на основе Ruby on Rails.

Как достичь связи между моим сервером веб-сокетов и моим приложением Ruby on Rails? Должны ли они работать на одном сервере и запускаться как один процесс? Запуск на отдельных серверах и обмен данными через AJAX?

мне нужно поддерживать аутентификацию и другие функции, такие как обновление базы данных, когда игра закончена, и т.д.

Спасибо заранее.

ответ

3

Это сделка. Я также хотел разработать клиент сервера websocket с рубиной на основе rails. Однако рубиновые рельсы не очень дружелюбны с eventmachine. Я боролся с наличием клиента websocket, поэтому мне удалось скопировать/вырезать/вставить с существующей библиотеки и в итоге получить следующие два дополнительных.

Em-WebSocket сервер

https://gist.github.com/ffaf2a8046b795d94ba0 

ROR дружественный WebSocket клиент

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 

Тогда ваш клиент может быть использован как этот

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 

Я хочу есть хороший ROR клиент дружественный эм-WebSocket, но не мог нормально один еще.

Как только вы создали сервер/клиент, он работает хорошо, auth. и поддержка базы данных не должна сильно отличаться от других правил rails. (Я имею в виду, имеющий на сторону клиента с некоторыми ограничениями авториза/дб)

3

Я работаю на драгоценном камне, который может быть полезным с текущим использованием. Драгоценный камень называется websocket-rails и был разработан с нуля, чтобы сделать использование WebSockets внутри приложения Rails простым. Сейчас он стабильный релиз.

Пожалуйста, дайте мне знать, если вы найдете это полезным или подумайте о том, где его может не хватать.