我开始使用em-websocket gem开发一个基于web-socket的游戏。
为了测试应用程序,我通过运行来启动服务器
$> ruby server.rb
然后我只是打开两个浏览器直接进入 html 文件(没有 Web 服务器)并开始播放。
但是现在我想添加一个Web服务器,一些数据库表,另一个基于Ruby on Rails的gem。
如何在我的 web-socket 服务器和我的 Ruby on Rails 应用程序之间实现通信?它们是否应该在同一台服务器中运行并作为单个进程运行?在单独的服务器中运行并通过 AJAX 进行通信?
我需要支持身份验证和其他功能,例如在游戏完成时更新数据库等。
提前谢谢。
有一个关于此的问题:
https://github.com/igrigorik/em-websocket/issues/21
这是交易。我还想开发一个带有Ruby on rails框架的websocket服务器客户端。然而,红宝石轨道对事件机器不是很友好。我一直在努力拥有一个 websocket 客户端,所以我设法从现有的库中复制/剪切/粘贴,最终得到了以下两个必不可少的库。
Em-Websocket 服务器
https://gist.github.com/ffaf2a8046b795d94ba0
ROR 友好型网络套接字客户端
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 客户端,但还不能罚款。
一旦你使服务器/客户端运行良好,身份验证和数据库支持就不能与其他轨道代码有很大不同。(我的意思是客户端有一些身份验证/数据库限制)
我正在研究一个可能对您当前用例有帮助的宝石。这个 gem 被称为 websocket-rails,它从头开始设计,使得在 Rails 应用程序中使用 WebSockets 变得简单。它现在处于稳定版本。
如果您觉得这有帮助或对可能缺少的地方有任何想法,请告诉我。