0

这可能是一个新手问题。我知道你可以很容易地在 Node.js 中做这种事情,但我不知道它叫什么,而且在 Google 上运气不佳。

基本上,我正在尝试使用 Ruby on Rails 构建一个简单的井字游戏服务器。玩家相互连接,并记录动作并实时处理结果。如果只是让用户向服务器发送消息,那么使用 AJAX 可以轻松完成。但是,我想让客户端等待并监听服务器指出另一个玩家已经移动,然后自动响应。我可以通过不断地用 AJAX ping 服务器来做到这一点,但必须有更好的方法。我觉得我错过了一些我还没有找到的大技术,只是因为我不完全确定如何描述它或它会被称为什么。

我想让客户端直接连接到服务器并保持实时连接吗?如果是这样,我该怎么做?如果不是,那么更好的方法是什么?在线游戏、股票行情和流媒体服务如何向客户提供它们的内容,Rails 为我提供了哪些工具来做类似的事情?

4

2 回答 2

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

我建议尝试建立在 faye 之上的 private_pub,它使用 eventmachine 可以解决您的大部分问题

pub/sub 模型有助于客户端订阅其频道,因此您可以将更新推送到最终将传递给客户端的频道。

你的问题和我的回答

问:我想让客户端直接连接到服务器并保持实时连接吗?如果是这样,我该怎么做?

A. 您可以使用 private_pub 或 faye 建立长连接并推送数据,也可以查看我们稍后的 pusher.com 他们提供的商业服务。

问:在线游戏、股票行情和流媒体服务如何向客户提供它们的内容,Rails 为我提供了哪些工具来做类似的事情?

A. AFAIK 每个人都使用某种推送技术。发布/订阅模型。ruby 有一些可用于此类要求的 gem,faye private_pub 其中一些..

于 2012-07-28T20:11:14.083 回答
0

对于商业解决方案,请查看 Pusher,它几乎完全符合您的要求: http:
//pusher.com/

对于开源解决方案,请查看 Faye(一个发布/订阅消息服务器):
http
: //faye.jcoglan.com/ 和一些很棒的 railscasts 解释它:
http ://railscasts.com/episodes/260-messaging-with- faye
http://railscasts.com/episodes/316-private-pub

于 2012-07-28T20:12:57.073 回答