使用 Pusher
结合 Echo
在客户端,我正在尝试使用 Bearer
通过 api 验证私有(private) channel 授权 header token - 但是我遇到了以下日志 (最后的日志是错误的) :
Pusher : : ["State changed","initialized -> connecting"]
Pusher : : ["Connecting",{"transport":"ws","url":"ws://ws-mt1.pusher.com:80/app/************?protocol=7&client=js&version=7.0.3&flash=false"}]
Pusher : : ["State changed","connecting -> connected with new socket ID 224550.32180982"]
Pusher : : ["No callbacks on private-App.User.17 for pusher:subscription_error"]
Pusher : : ["Error: JSON returned from auth endpoint was invalid, yet status code was 200. Data was: <!doctype html>\n<html class="en" lang="en">\n\t\n\t\t\t<meta charset="utf-...
好像我的服务器只是返回网页而不是 JSON 响应。
这是我的客户端设置:
Pusher.logToConsole = true
const PusherClient = new Pusher(PUSHER_APP_KEY,{
cluster: PUSHER_APP_CLUSTER,
wsHost: `ws-${PUSHER_APP_CLUSTER}.pusher.com`,
wssPort: 443,
enabledTransports: ['ws'],
forceTLS: true,
encrypted: true,
auth: {
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
},
authEndpoint: http://127.0.0.1:8000/api/broadcasting/auth'
});
return new Echo({
broadcaster: 'pusher',
client: PusherClient
})
api.php
中定义的广播路由在 Laravel 服务器上:Route::group(['middleware' => 'auth:api'], function () {
Broadcast::routes();
});
我在这里想念什么?
最佳答案
首先,您可以在没有 laravel-echo 的情况下设置客户端,只需使用 pusher-js。在我使用的版本中不应该有 Content-Type header :
auth: {
headers: {
'Authorization': `Bearer CLIENT_TOKEN`,
}
},
您必须确保 channel 您正在订阅可用并且所有推送者应用参数还有用户 token 正确插入。
关于通过 API 进行 Laravel Echo 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67245572/