我开始使用em-websocket gem开发基于Web套接字的游戏。
要测试应用程序,请运行
启动服务器$> ruby server.rb
然后我打开两个浏览器直接进入html文件(没有Web服务器)并开始播放。
但是现在我想添加一个Web服务器,一些数据库表,另一个基于Ruby on Rails的gem。
如何在我的Web套接字服务器和Ruby on Rails应用程序之间实现通信?它们应该在同一台服务器上运行并作为单个进程运行吗?在不同的服务器上运行并通过AJAX进行通信?
我需要支持身份验证和其他功能,比如游戏结束时更新数据库等等。
提前致谢。
答案 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简单易行。它现在处于稳定版本。
如果您觉得这有用,或者对可能缺少的地方有任何想法,请告诉我。