这可能是一个新问题。我知道你可以很容易地在Node.js中做这种事情,但我不知道它叫什么,并且没有太多运气与谷歌。
基本上,我正在尝试使用Ruby on Rails构建一个简单的tic-tac-toe服务器。玩家彼此连接,并记录移动并实时处理结果。如果它只是让用户向服务器发送消息,那么使用AJAX就可以轻松完成。但是,我想让客户端等待并听取服务器指出其他玩家已经移动,然后自动响应。我可以通过不断地用AJAX ping服务器来做到这一点,但必须有更好的方法。我觉得我错过了一些我还没有找到的大技术,因为我不完全确定如何描述它或它会被称为什么。
我是否希望客户端直接连接到服务器并维护实时连接?如果是这样,我该怎么做?如果没有,那么更好的方法是什么?网络游戏,股票行情和流媒体服务如何向客户提供内容,Rails给我做些类似的工具?
答案 0 :(得分:0)
检查ruby中的eventmachine
一些链接
https://github.com/eventmachine/eventmachine/wiki
http://20bits.com/article/an-eventmachine-tutorial
http://rubysource.com/introduction-to-event-machine
有一个faye和private_pub gem让事情更简单。
有轨道广播。
http://railscasts.com/episodes/260-messaging-with-faye
http://railscasts.com/episodes/316-private-pub
我建议尝试使用eventmachine建立在faye上的private_pub,它可以解决你的大多数问题
pub / sub模型有助于客户订阅其频道 ,因此您可以将更新推送到最终将传递给客户端的频道。
您的问题和我的答案
Q值。我想让客户端直接连接到服务器并保持实时连接吗?如果是这样,我该怎么做?
一个。您可以使用private_pub或faye建立长连接和推送数据 也请稍后查看我们为pusher.com提供的商业服务。
问:网络游戏和股票行情和流媒体服务如何向客户提供他们的内容,Rails给我做什么类似的工具?一个。 AFAIK每个人都使用某种推送技术。发布/订阅模型。 ruby有一些可用于此类要求的宝石,faye private_pub中的一些......
答案 1 :(得分:0)
对于商业解决方案,请查看Pusher,它几乎完全符合您的要求:
http://pusher.com/
对于开源解决方案,请查看Faye(发布/订阅消息服务器):
http://faye.jcoglan.com/
和一些很棒的轨道广播解释它:
http://railscasts.com/episodes/260-messaging-with-faye
http://railscasts.com/episodes/316-private-pub