我正在为一个项目确定架构选项,该项目将呈现用户活动(登录、照片等)的实时更新(如 Facebook)。该项目的两个主要 UI 组件是自动更新滚动区域,其中将列出新通知(照片等),以及将更新诸如更新消息计数等内容的工具栏。
这一领域的竞争者是基于 Jabber/Comet/XMPP 和 WebSocket 的技术。
彗星阵营:
WebSockets 阵营:
- kaazing.com/
- www.lightstreamer.com/
- superwebsocket.codeplex.com/
(无法发布超过两个链接)
由于现有基础架构是 Microsoft 堆栈,我宁愿不将基于 Java 的服务器引入其中。说到这里,它留下了(非常有吸引力的)WebSync(Comet)和 SuperWebSocket(WebSockets)。然而,Pokein 的 DLL 集成也相当无缝地集成到 .Net 项目中。
.Net 是否还有其他实际生产级别的 WebSocket 计划?在 Microsoft 堆栈上采用 WebSocket 是否为时过早?我是否应该支持 Kazing 之类的东西?
我仍在等待有关我们当前用户群的浏览器类型和版本的报告(检查 HTML5 兼容性)。我怀疑这个数字会很低(老用户群)。如果是这样的话,Comet 选项将是赢家。
还有哪些事情需要考虑?
我可以从使用过上述技术和产品的人那里得到一些评论吗?
谢谢。
答案1
我有偏见(我在 Frozen Mountain 工作),但你应该看看 WebSync。
WebSync v4 除了根据需要回退到长轮询/回调轮询之外,还使用 WebSockets。WebSync 中的 WebSockets 也全部通过标准 HTTP 端口,因此不会出现路由器/防火墙等问题。
在“正常”系统上,您应该看到约 20k 个并发消息(每个节点)和约 100k 条消息/秒。不过,这些数字非常粗略,因为它在很大程度上取决于您的系统和您发送的消息类型等。我们曾看到过高达 50k 个用户(每个节点)和(在另一项测试中)300k 条消息/秒。
其他使用过该产品的人的一些评论:
https://stackoverflow.com/a/8525454/25330
https://stackoverflow.com/questions/2604193/websync-pros-and-cons
答案2
根据我的研究,使用 IISNode 查看 Node.JS 和 SocketIO 可能是一个不错的选择。但是,很多人提到过 Node.JS 和 SignalR,进一步深入研究后发现,SignalR 与 .Net 的集成是完全无缝的。