跳到正文

应用场景

协作界面

两个人编辑同一样东西时,需要持续得到三个答案:还有谁在、他刚做了什么、他的光标在哪。presence、事件和客户端事件依次回答这三个问题。

presence-doc-9f2
  • presence 频道
  • 客户端事件
  • 事件
  • private-encrypted 频道

它是怎么工作的

  1. 01加入文档每个文档一个 presence 频道,在 subscribe 时由你的服务器鉴权。
  2. 02显示谁在成员列表随订阅一起到达;事件让头像保持诚实。
  3. 03广播意图光标和选区是客户端事件——高频而且用完就扔。
  4. 04提交更改持久的编辑先经过你的服务器,然后再 publish——这样所有人都收敛到已保存的状态。

值得知道

客户端事件有速率限制且不会被保存——它们适合光标,不适合编辑。任何需要在刷新之后仍然存在的东西都要经过你的服务器。

看代码

doc.js
js
const doc = pusher.subscribe('presence-doc-9f2')// Ephemeral: straight between editors, never persisted.canvas.onpointermove = throttle((e) => {  doc.trigger('client-cursor', { x: e.clientX, y: e.clientY })}, 50)// Durable: your server persisted it, then published it.doc.bind('block-updated', (block) => applyBlock(block))

用官方的 Pusher 库写成,未作任何修改——没有 PushCaster 的包要装。 完整文档

大家还在构建什么

全部应用场景
presence-room-42

实时聊天

建立在 presence 频道上的房间、成员与正在输入的提示。

private-user-1e9

通知

服务器的一个事件,送达用户开着的每一个界面。

private-metrics

实时仪表盘

一变化就推送指标,而不是用轮询去要。

建一个应用,把它做出来。

Support