我应该为此使用啥 WebSockets 系统?
Posted
技术标签:
【中文标题】我应该为此使用啥 WebSockets 系统?【英文标题】:What WebSockets system should I use for this?我应该为此使用什么 WebSockets 系统? 【发布时间】:2012-06-16 13:52:04 【问题描述】:我正在构建一个需要实时评论系统的 Rails 应用程序。我将使用 WebSockets,但我对它们很陌生,我有点迷路了。我尝试了em-websockets
和websocket-rails
,但都不能很好地完成我必须做的事情。我也想过一个 Node.JS 和 Socket.io 应用程序,但我不知道如何开始。
我想要做的是在我的 CommentsController 的 create
操作上对帖子发表新评论时发送 WebSocket 消息。我将发送一条包含评论内容和创建者以及帖子 ID 的消息。
提前致谢! :D
【问题讨论】:
【参考方案1】:对不起,我不这么认为。小心使用 WebSocket。它是提供非常强大机制的基本概念。
Websockets 非常适合在线游戏等超级、绝对实时的应用程序。对于不需要它们的评论系统(甚至是实时的),AJAX 就足够了。
【讨论】:
Websocket 是未来。仅仅使用普通的轮询 AJAX 请求不是可行的方法。【参考方案2】:如果您不想处理自己的实时基础架构、旧浏览器的回退、扩展复杂性等问题,您可以使用 realtime hosted service。
我最近在building a realtime commenting system 上写了一篇关于 Smashing Mag 的帖子。它使用 php 和 Pusher(我为谁工作),但客户端和服务器之间的分离应该意味着您可以使用任何后端技术/服务。它还演示了如何逐步增强您的应用。
正如@Alfred 所建议的,用于实时通信的最常用的自托管 ruby 技术似乎确实是 Faye。
【讨论】:
【参考方案3】:仅使用 websockets 作为唯一可用的传输方式并不是一个好主意,因为websockets are not yet supported in every browser。幸运的是,例如 Faye 确实支持多种传输,因此它可以在每个浏览器中工作。过去我还发现了这个有趣的视频,它解释了如何使用 Faye in conjunction with RoR from RailsCast。
【讨论】:
以上是关于我应该为此使用啥 WebSockets 系统?的主要内容,如果未能解决你的问题,请参考以下文章
集群事件驱动的 Java 应用程序 - 我应该使用 Websockets 还是轮询?