我应该为此使用啥 WebSockets 系统?

Posted

技术标签:

【中文标题】我应该为此使用啥 WebSockets 系统?【英文标题】:What WebSockets system should I use for this?我应该为此使用什么 WebSockets 系统? 【发布时间】:2012-06-16 13:52:04 【问题描述】:

我正在构建一个需要实时评论系统的 Rails 应用程序。我将使用 WebSockets,但我对它们很陌生,我有点迷路了。我尝试了em-websocketswebsocket-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 系统?的主要内容,如果未能解决你的问题,请参考以下文章

WebSockets 和 Socket.io 有啥区别?

集群事件驱动的 Java 应用程序 - 我应该使用 Websockets 还是轮询?

ipad 上的 Websockets,还有啥需要做的吗?

我应该使用哪个 node.js 套接字引擎?

我正在从二级事件中心接收数据。我想将第二级数据转换为分钟级。我应该为此写啥查询?

socket.io 啥时候使用轮询而不是 websockets?