You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法订阅Pusher私有频道,遇FileNotFoundException错误求助

解决Pusher私有频道订阅的AuthorizationFailureException错误

错误核心原因

你遇到的FileNotFoundException本质是Pusher客户端无法访问指定的授权端点URL,导致私有频道订阅的授权流程失败。以下是具体排查方向和解决步骤:

可能的故障原因

  • 授权端点URL未正确配置:代码中HttpChannelAuthorizer("END_POINT")的END_POINT是占位符,未替换为实际的后端授权地址https://devapi.bdknowledgebook.com/api/broadcasting/auth。
  • 后端授权端点不存在/路径错误:后端未实现/api/broadcasting/auth路由,或路径拼写错误(比如少斜杠、单词拼写错误)。
  • 后端服务不可达:devapi.bdknowledgebook.com域名无法访问、后端服务未启动,或防火墙/跨域策略阻止了请求。
  • 请求头格式不符合后端要求:比如Authorization头缺少Bearer前缀(多数后端要求token格式为Bearer {token})。

解决步骤

1. 修正前端授权端点URL

将代码中的占位符END_POINT替换为实际的后端授权URL:

// 替换前
val channelAuthorizer = HttpChannelAuthorizer("END_POINT")
// 替换后
val channelAuthorizer = HttpChannelAuthorizer("https://devapi.bdknowledgebook.com/api/broadcasting/auth")

2. 验证后端授权端点的可用性

用Postman或curl发送POST请求到https://devapi.bdknowledgebook.com/api/broadcasting/auth,携带以下参数:

  • 请求头:Authorization: Bearer {你的用户token}、Accept: application/json
  • 请求体(form-data或json):channel_name=private-message.2、socket_id={Pusher连接后的socketId}

如果端点正常,会返回200状态码和如下格式的响应:

{"auth": "your_app_key:generated_signature"}

如果返回404,说明后端路由未配置;返回401/403,说明权限验证失败。

3. 检查后端授权逻辑

如果是Laravel项目:

  • 确保BroadcastServiceProvider已在config/app.php中注册
  • 在routes/channels.php中定义私有频道的授权规则:
Broadcast::channel('private-message.{id}', function ($user, $id) {
    // 验证用户是否有权访问该频道,比如用户ID是否匹配$id
    return (int) $user->id === (int) $id;
});

如果是其他框架,需自行实现授权接口:接收channel_name和socket_id参数,验证用户权限后返回符合Pusher要求的auth签名。

4. 修正请求头格式(若需要)

如果后端要求Authorization头带Bearer前缀,修改代码中的头配置:

val authToken = sharedPrefHelper.getString(SpKey.userAuthKey)
parameters["Authorization"] = "Bearer $authToken"

Pusher控制台配置说明

Pusher控制台无需额外配置私有频道的权限,只要确保App Key、Cluster与代码中一致即可,核心授权逻辑由后端实现。

内容的提问来源于stack exchange,提问作者Atik Faysal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:58:19