关于 blink-realtime
blink-realtime 是通过 CLI 和 SDK 发布、订阅 Blink 实时频道的技能,面向构建实时功能的开发者。它支持消息与在线状态,可用于聊天、协作、通知、游戏和实时仪表盘。
主要功能
- 01向频道发布事件
- 02订阅频道消息
- 03跟踪频道在线状态
- 04使用 CLI 和 SDK 接口
适用场景
- 01构建含消息和在线状态的聊天
- 02向连接的客户端发送提醒
- 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