gpt4 book ai didi

javascript - 实时网络库 - 用 socket.io 或什么替换 hookbox?

转载 作者:数据小太阳 更新时间:2023-10-29 04:16:20 25 4
gpt4 key购买 nike

我有几个项目是使用 hookbox 构建的,用于管理 Web 客户端和服务器之间的实时消息传递。 Hookbox 很棒——它完全抽象了传输层,通过优雅的安全系统跨不同 channel 公开了一个简单的发布/订阅接口(interface)。

不幸的是,由于最初的维护者甚至不愿意努力移交所有权,hookbox 项目迅速陷入困惑。 (Grrr!)因此很难再将其视为一个可行的平台。

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

  • 使用 HTML5 websockets 或可用的 COMET 无缝地跨浏览器工作。传输选择应该对应用层不可见。我不关心古老的浏览器 (IE6)
  • 从 javascript 和服务器端系统(即在 php/python/ruby​​ 中)进行客户端访问——这很关键
  • 提供具有任意负载的发布/订阅隐喻
  • 允许客户端查看其他客户端连接到 channel 的内容,即在线状态
  • 通过对任何网络应用程序的回调进行细粒度访问控制(很高兴)

我听说 socket.io 可以做一些这样的事情,但我觉得它处于堆栈的较低层。它可以连接到非 JavaScript 库吗?做授权?

最佳答案

我对 NodeJS 有很好的体验和 Socket.IO在过去的 8 个月里。服务器端组件对我来说非常稳定——我可以让它在非常高的消息量下运行,而且它的常驻内存从未真正超过 20MB。到目前为止,我只能让它运行大约 4 周而不终止服务器,但这只是因为我需要更新我的服务器端代码。

Works seemlessly cross browser, using HTML5 websockets or COMET as available. Transport choice should be invisible to application layer. I don't care about ancient browsers (IE6)

Provides a publish / subscribe metaphor with arbitrary payloads

Socket.IO 也是一款很棒的软件。它正在积极开发中,并使用 EventEmitter (NodeJS) 的“on”(订阅)和“emit”(发布)语义内置了一个简单的 pub/sub 样式抽象。对于正在使用的传输,它在客户端也非常透明。我主要将它用于直接的 WebSocket 支持,但它可以退回到基于 Flash 的套接字、xhr-polling 和 jsonp 轮询。

Client access from both javascript and server-side systems (i.e. in php / python / ruby) -- this is critical

NodeJS 是 JavaScript,运行在 V8 引擎上。它有一吨3rd party modules它提供了很好的抽象以及与外部组件的接口(interface),例如数据库或消息队列,等等。至于使用 php/python/ruby 访问系统,它可以像访问任何其他服务器一样工作。选择您的通信方法(基本的 TCP/IP,或者可能是 HTTP POST 或 GET,或者甚至通过文件系统),NodeJS 并不真正关心谁在提供数据。就我个人而言,我实现了一个运行良好的 C# 客户端。

Allows clients to see what other clients are connected to a channel, i.e. presence

它没有任何内置的“存在”逻辑,尽管 Socket.IO 中已经有了内置的“发布/订阅”逻辑,您所要做的就是在服务器上存储状态,所以新客户可以检索现有的状态数据。我在保留状态的服务器上实现了我自己的基本发布/订阅,所有这些(包括 NodeJS 服务器代码和基本的 Socket.IO stub )只有 50 行 JavaScript(包括空格)。

Fine-grained access control through callbacks to any web application (nice to have)

不确定“通过对任何 Web 应用程序的回调进行细粒度访问控制(很高兴)”是什么意思。他们使用回调的发布/订阅事件/观察者隐喻,因此您可以将特定操作挂接到特定事件。

Do auth?

我还没有必要为我们的系统做任何授权,所以我不能直接与它对话。但是,如果您浏览 NodeJS 模块,您会注意到有许多可用的身份验证模块,包括 LDAP 和 OAuth,更不用说 one module 了。声称做“OpenId、Google、OAuth、Twitter、LinkedIn、Yahoo、Readability、Dropbox、Justin.tv、Vimeo、Tumblr、OAuth2、Facebook、GitHub、Instagram、Foursquare、Box.net、LDAP”

关于javascript - 实时网络库 - 用 socket.io 或什么替换 hookbox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6725873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com