例如,Zendesk有一个名为Agent Collision Notification的功能-当您编辑票证时,如果其他人正在编辑此票证,您会收到一条注释。
支持此类功能的基础架构是什么?这个问题似乎是针对同一件事,但层次要低得多。
为了使系统完全动态(同时通知第一个查看器)并且速度合理,可能需要一些类似彗星或websocket的东西。但与聊天系统(一个主要的彗星示例)不同的是,Ticket系统中的用户经常切换页面。
对于这样的事情,程序流和服务器基础设施是什么?
如果您想允许实时协作,那么您会感兴趣的这个问题也会提到操作转换。还有一个关于操作转换库的问题。
对于这样的事情,程序流和服务器基础设施是什么?
我为Pusher工作,所以我可以告诉你一个使用我们技术的解决方案。
- 用户A打开可能发生"冲突"的页面。在页面内订阅页面的频道
- 用户A开始编辑页面。向服务器发送一个AJAX请求,这样就有了一些关于正在编辑页面的持久状态。在频道上触发一个事件,声明用户正在编辑页面
- 用户B打开页面。页面加载并可以显示页面正在编辑的持久状态中的信息
- 用户A完成编辑,并向服务器发出更新页面状态的请求。触发一个事件,指示没有人正在编辑页面。此事件将分发给用户B(更新后的页面也可以通过事件内分发,或者在收到事件时通过AJAX请求分发)
- 用户B现在知道他/她可以编辑页面。它们开始编辑(请参见步骤2),并通知用户A用户B正在编辑页面
使用presence也很酷,这样你就可以看到还有谁在查看页面,并允许用户在更改发生时讨论更改。