首页 文章

实时Web库 - 用socket.io替换hookbox或者什么?

提问于
浏览
8

我有几个使用hookbox构建的项目来管理Web客户端和服务器之间的实时消息传递 . Hookbox很棒 - 它完全抽象了传输层,通过优雅的安全系统在不同的通道上展示了一个简单的发布/订阅接口 .

不幸的是,由于最初的维护者不愿意放弃所有权,因此钩子项目很快陷入混乱 . (Grrr!)因此很难将它视为一个可行的平台 .

什么是提供与Web应用程序实时通信的良好平台?要求:

  • 使用HTML5 websockets或COMET可以无缝地跨浏览器 . 运输选择对于应用层应该是不可见的 . 我不关心古老的浏览器(IE6)

  • 来自javascript和服务器端系统的客户端访问(即在php / python / ruby中) - 这是至关重要的

  • 提供具有任意有效负载的发布/订阅隐喻

  • 允许客户端查看其他客户端连接到某个 Channels ,即状态

  • 通过回调到任何Web应用程序的细粒度访问控制(很高兴)

我听说socket.io可以做到这一点,但我感觉它位于堆栈的较低层 . 它可以连接到非JavaScript库吗?认证吗?

3 回答

  • 3

    虽然我还没有尝试过,但是我开始研究Pusher获取Node Knockout 2011条目 . 除了JavaScript之外,它还支持以下非js客户端:

    • Objective-C

    • ActionScript

    • .NET和Silverlight

    • Ruby

    • Arduino

    如果可以通过第三方进行消息传递,您可以使用他们的沙盒计划免费试用该服务(20个连接和每天最多100K消息)并查看它是否满足您的需求 . (我对“存在”要求有点不确定,尽管可能会在文档中介绍 . )

  • 0

    在过去的8个月里,我和NodeJS以及_1670615都有过非常好的经历 . 服务器端组件对我来说非常稳定 - 我可以让它以非常高的消息量运行它只能让它运行大约4周而不终止服务器,但这只是因为我需要更新我的服务器端代码 .

    使用HTML5 websockets或COMET可以无缝地跨浏览器工作 . 运输选择对于应用层应该是不可见的 . 我不关心古代浏览器(IE6)提供具有任意有效负载的发布/订阅隐喻

    Socket.IO也是一款出色的软件 . 它处于主动开发阶段,并且使用“on”(subscribe)和“emit”(发布)的EventEmitter(NodeJS)语义构建了一个简单的pub / sub样式抽象 . 对于正在使用的传输,客户端也非常透明 . 我主要用它来支持直接的WebSocket,但它可以回退到基于Flash的套接字,xhr-polling和jsonp轮询 .

    来自javascript和服务器端系统的客户端访问(即在php / python / ruby中) - 这很关键

    NodeJS是JavaScript,在V8引擎上运行 . 它拥有大量的3rd party modules,它提供了很好的抽象以及与外部组件的连接,例如数据库或消息队列等等 . 至于使用php / python / ruby命中系统,它可以像击中任何其他服务器一样工作 . 选择你的通信方式(基本TCP / IP,或者HTTP POST或GET,甚至通过文件系统),NodeJS没有实现一个运行良好的C#客户端 .

    允许客户端查看其他客户端连接到某个 Channels ,即状态

    虽然内置的'pub / sub'逻辑已经存在于Socket.IO中,但它没有任何内置的“存在”逻辑,所有你需要做的就是在服务器上存储状态,以便新客户端可以检索现有的状态数据 . 我已经在保留状态的服务器上实现了我自己的基本pub / sub,并且所有这些(包括NodeJS服务器代码和基本的Socket.IO存根)只有50行JavaScript(包括空格) .

    通过回调到任何Web应用程序的细粒度访问控制(很高兴)

    不确定你的意思是'通过回调到任何Web应用程序的细粒度访问控制(很高兴)' . 他们使用的pub / sub事件/观察者隐喻使用回调,因此您将特定操作挂钩到特定事件 .

    认证吗?

    我've had no need, yet, to do any auth for our systems, so I can't直接说话 . 但是,如果您浏览NodeJS模块,您会注意到有许多auth模块可用,包括LDAP和OAuth,更不用说one module声称要做"OpenId, Google, OAuth, Twitter, LinkedIn, Yahoo, Readability, Dropbox, Justin.tv, Vimeo, Tumblr, OAuth2, Facebook, GitHub, Instagram, Foursquare, Box.net, LDAP"

  • 2

    我重新使用node.js,它有很多用于各种事物的库 . 一个用于实时消息传递的库是now.js . 我没有很多这方面的经验,但已经尝试过,我会说它运作良好,并且拥有你所说的一切 .

相关问题