跳到正文

应用场景

实时聊天

一个聊天室就是一个 presence 频道。成员来自频道,而不是来自你要辛苦同步的一张表。消息就是事件;正在输入的提示压根不碰你的服务器。

presence-room-42
  • presence 频道
  • 事件
  • 客户端事件
  • webhook

它是怎么工作的

  1. 01鉴权你的服务器判断这个用户能不能进来,并返回他的成员 id。
  2. 02渲染成员订阅会返回成员列表;加入和离开的事件让它保持最新。
  3. 03发送消息在你的服务器完成持久化和鉴权之后,作为事件 publish 出去。
  4. 04正在输入的提示客户端事件,在订阅者之间发送——转瞬即逝,所以没有往返。

值得知道

历史是你数据库的活,不是频道的活。刚加入的客户端拿到的是此后发生的事——过往的部分用 HTTP 加载。

看代码

room.js
js
const room = pusher.subscribe('presence-room-42')room.bind('pusher:subscription_succeeded', (members) => {  renderMemberList(members)})room.bind('pusher:member_added', (m) => addMember(m))room.bind('pusher:member_removed', (m) => removeMember(m))room.bind('message', (msg) => appendMessage(msg))// Ephemeral, straight between subscribers.input.oninput = () => room.trigger('client-typing', { at: Date.now() })

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

大家还在构建什么

全部应用场景
private-user-1e9

通知

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

private-metrics

实时仪表盘

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

presence-doc-9f2

协作界面

成员可被跟踪的共享文档、画布和光标。

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

Support