3

em-websocket gem を使用して、Web ソケット ベースのゲームの開発を開始しました。

アプリケーションをテストするには、実行してサーバーを起動します

$> ruby​​ server.rb

次に、html ファイル (Web サーバーなし) に直接アクセスする 2 つのブラウザーを開き、再生を開始します。

しかし今は、Web サーバー、いくつかのデータベース テーブル、その他の Ruby on Rails ベースの gem を追加したいと考えています。

Web ソケット サーバーと Ruby on Rails アプリケーション間の通信をどのように実現しますか? 同じサーバーで実行し、単一のプロセスとして実行する必要がありますか? 別々のサーバーで実行し、AJAX を介して通信しますか?

認証や、ゲーム終了時のデータベースの更新などの機能をサポートする必要があります。

前もって感謝します。

4

3 に答える 3

3

私はあなたの現在のユースケースに役立つかもしれない宝石に取り組んでいます。この宝石はwebsocket-railsと呼ばれ、Railsアプリケーション内でWebSocketを簡単に使用できるようにゼロから設計されています。現在、安定したリリースになっています。

これが役に立ったと感じた場合、または不足している可能性がある場所について何か考えがある場合は、お知らせください。

于 2012-06-03T22:19:25.627 に答える
3

これが取引です。また、Ruby on Rails フレームワークを使用して Websocket サーバー クライアントを開発したいと考えていました。しかし、ruby-on-rails は eventmachine とあまり相性が良くありません。私は websocket クライアントを持つのに苦労していたので、既存のライブラリからコピー/カット/ペーストして、次の 2 つの不可欠なものになりました。

Em-Websocket サーバー

https://gist.github.com/ffaf2a8046b795d94ba0

ROR フレンドリーな Websocket クライアント

https://gist.github.com/2416740

スクリプトディレクトリにサーバーコードを置き、ruby コードで次のように開始します。

    # 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 に適した優れた em-websocket クライアントがあればいいのですが、まだうまくいきません。

サーバー/クライアントが正常に動作するようになったら、auth. また、データベースのサポートは、他の Rails コードと大きく異なってはなりません。(クライアント側に auth/db の制限があることを意味します)

于 2012-04-18T21:40:22.597 に答える
3

これについて作成された問題があります。

https://github.com/igrigorik/em-websocket/issues/21

于 2012-04-18T21:48:29.867 に答える