mcpField
B
blink-realtime

blink-realtime

github.com/blink-new开发438 次安装2 周前更新
代码仓库

关于 blink-realtime

blink-realtime 是通过 CLI 和 SDK 发布、订阅 Blink 实时频道的技能,面向构建实时功能的开发者。它支持消息与在线状态,可用于聊天、协作、通知、游戏和实时仪表盘。

主要功能

  1. 01向频道发布事件
  2. 02订阅频道消息
  3. 03跟踪频道在线状态
  4. 04使用 CLI 和 SDK 接口

适用场景

  1. 01构建含消息和在线状态的聊天
  2. 02向连接的客户端发送提醒
  3. 03同步协作编辑或游戏状态

MCP 相关

它提供 `blink_realtime_publish` 工具,供 MCP 客户端向频道发布事件。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/blink-new/blink-plugin --skill blink-realtime

安装后在 Claude Code 中输入/blink-realtime确认已加载。

详细介绍

需要身份验证:若要启用实时功能,请使用 auth: { mode: 'managed' } 初始化。

入门

# Publish a message to a channel
blink realtime publish chat-room --type message --data '{"text":"Hello everyone!"}'

# Publish with user context
blink realtime publish notifications --type alert --data '{"level":"info","text":"Deploy complete"}'

MCP 工具

工具描述
blink_realtime_publish向频道发布事件

SDK 方法

// Simple subscribe/publish
const unsubscribe = await blink.realtime.subscribe('chat-room', (message) => {
  console.log(message.data)
})

await blink.realtime.publish('chat-room', 'message', { text: 'Hello!' })
unsubscribe()

频道 API(高级)

const channel = blink.realtime.channel('game-lobby')

await channel.subscribe({
  userId: user.id,
  metadata: { displayName: user.name, status: 'online' }
})

channel.onMessage((msg) => {
  if (msg.type === 'chat') addMessage(msg.data)
})

channel.onPresence((users) => {
  setOnlineUsers(users)
})

await channel.publish('chat', { text: 'Hello!' }, { userId: user.id })

const history = await channel.getMessages({ limit: 50 })
const users = await channel.getPresence()

await channel.unsubscribe()

消息格式

{
  id: '1640995200000-0',
  type: 'chat',
  data: { text: 'Hello!' },
  timestamp: 1640995200000,
  userId: 'user123',
  metadata: { displayName: 'John' }
}

Presence 格式

{
  userId: 'user123',
  metadata: { displayName: 'John', status: 'online' },
  joinedAt: 1640995200000,
  lastSeen: 1640995230000
}

React 清理(关键)

useEffect(() => {
  if (!user?.id) return

  let channel: any = null

  const init = async () => {
    channel = blink.realtime.channel('room')
    await channel.subscribe({ userId: user.id })
    channel.onMessage((msg: any) => setMessages(prev => [...prev, msg]))
  }

  init().catch(console.error)

  return () => { channel?.unsubscribe() }
}, [user?.id])

切勿在异步函数内部返回清理函数,否则它会丢失。请在外部存储频道引用,并同步进行清理。

使用场景

  • 聊天应用 — 消息 + Presence + 历史记录
  • 实时协作 — 光标位置、文档编辑
  • 通知 — 向已连接的客户端推送实时提醒
  • 游戏 — 游戏状态同步、大厅管理
  • 仪表板 — 实时数据更新

评论

支持 Markdown