Ruby on Rails的em-websocket gem

时间:2012-04-18 21:22:21

标签: ruby-on-rails websocket eventmachine em-websocket

我开始使用em-websocket gem开发基于Web套接字的游戏。

要测试应用程序,请运行

启动服务器

$> ruby server.rb

然后我打开两个浏览器直接进入html文件(没有Web服务器)并开始播放。

但是现在我想添加一个Web服务器,一些数据库表,另一个基于Ruby on Rails的gem。

如何在我的Web套接字服务器和Ruby on Rails应用程序之间实现通信?它们应该在同一台服务器上运行并作为单个进程运行吗?在不同的服务器上运行并通过AJAX进行通信?

我需要支持身份验证和其他功能,比如游戏结束时更新数据库等等。

提前致谢。

3 个答案:

答案 0 :(得分:3)

这是合约。我还想开发一个带有ruby on rails框架的websocket服务器客户端。然而ruby-on-rails对eventmachine不是很友好。我有一个websocket客户端,所以我设法从现有的lib复制/剪切/粘贴,最后得到以下两个escessential。

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限制)

答案 1 :(得分:3)

答案 2 :(得分:3)

我正在开发一个可能对您当前的用例有帮助的gem。这个gem被称为websocket-rails,它是从头开始设计的,使得在Rails应用程序中使用WebSockets简单易行。它现在处于稳定版本。

如果您觉得这有用,或者对可能缺少的地方有任何想法,请告诉我。