Skip to content

HTTP API 参考手册 (Pusher Protocol)

本服务实现了标准的 Pusher HTTP API。你可以使用任何支持 Pusher 协议的客户端库或直接调用 WebSocket 服务器的 REST API。

接口地址

在生产环境中,API 请求通常直接发往 WebSocket 服务(通过内网或本地回环)。

认证 (Authentication)

请求签名机制遵循 Pusher 协议标准。详情请查阅 Pusher HTTP API 认证文档

所有 API 请求都需要包含 auth_key, auth_timestamp, auth_version, body_md5 (POST请求) 和 auth_signature

接口列表

1. 触发事件 (Trigger Event)

发布消息到一个或多个频道。

  • Endpoint: `POST /apps/{app_id}/events`

Payload 示例 (私有频道)

```json { "name": "App\Events\OrderShipped", "channels": ["private-user.1"], "data": "{"order_id": "ORD-2023-001", "status": "shipped"}" } ```

IMPORTANT

`data` 字段必须是一个 JSON 编码的字符串。如果你传递的是对象,服务将无法正确解析。

Payload 示例 (排除发送者)

在实现“打字指示器”或“即时聊天”时,你可能希望排除发送消息的用户自己。

```json { "name": "client-typing", "channel": "chat-room.1", "data": "{"user_id": 42}", "socket_id": "1234.5678" } ``` 注意:`socket_id` 是客户端连接时获得的唯一标识符。

2. 查询频道状态 (Fetch Channels)

获取当前活跃的频道列表。

  • Endpoint: `GET /apps/{app_id}/channels`
  • Query Params:
    • `filter_by_prefix` (string): 例如 `presence-`
    • `info` (string): 逗号分隔的附加信息,如 `user_count` (仅限 presence 频道)

Channels Response

```json { "channels": { "presence-chat": { "user_count": 5 }, "public-news": {} } } ```

3. 查询频道用户 (Fetch Users)

获取 Presence 频道中的在线用户列表。

  • Endpoint: `GET /apps/{app_id}/channels/{channel_name}/users`

Users Response

```json { "users": [ { "id": "1" }, { "id": "2" } ] } ```


错误代码对照表

状态码含义常见原因
200OK请求成功
400Bad RequestJSON 格式错误,或缺少必填字段 (name, channels, data)
401UnauthorizedApp Key 不存在,或者 auth_signature 校验失败
403Forbidden该应用被禁用,或尝试向未授权的频道发送消息
413Payload Too Large消息体超过大小限制 (默认 10KB,可在配置中调整)