3

我开始使用 em-websocket gem 开发基于 web-socket 的游戏。

为了测试应用程序,我通过运行启动服务器

$> 红宝石服务器.rb

然后我打开两个浏览器直接访问 html 文件(没有网络服务器)并开始播放。

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

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

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

提前致谢。

4

3 回答 3

3

这是交易。我还想用 ruby​​ on rails 框架开发一个 websocket 服务器客户端。然而 ruby​​-on-rails 对 eventmachine 不是很友好。我一直在为拥有一个 websocket 客户端而苦苦挣扎,所以我设法从现有的 lib 中复制/剪切/粘贴,并最终得到以下两个基本的。

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 回答
3

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

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

于 2012-06-03T22:19:25.627 回答