我目前正在使用laravel 5.8和pusher 3.0.3,对这些新技术还是陌生的。我创建了一个简单的聊天室,但无法使用pusher
收听状态频道。我以前尝试过Echo
,但找不到调试方法。
这是来自控制台的pusher:subscription_error
:
Pusher: JSON returned from webapp was invalid, yet status code was 200. Data was: <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
我已经将此行添加到我的BroadcastServiceProvider.php
Broadcast::routes(['middleware' => ['auth:api']]);
require base_path('routes/channels.php');
我已经通过公共频道收到来自推式调试器的事件,所以我认为我已经正确设置了凭据。
这是我的bootstrap.js
的重要部分。
const CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
var pusher = new Pusher('61540f91921896045e25', {
cluster: "ap1",
forceTLS: true,
//authEndpoint: 'authchatuser'
authEndpoint: '/broadcasting/auth',
auth: {
headers: {
'X-CSRF-Token': CSRF_TOKEN
}
}
});
var channel = pusher.subscribe('presence-chatroom');
//var channel = pusher.subscribe('chatroom');
channel.bind('MessagePosted', function(data) {
console.loga(data);
});
channel.bind('pusher:subscription_error', function(data) {
console.log("Pusher: " + data);
});
在“网络”标签上,我看不到对推送器authEndpoint broadcasting/auth
的请求,但我看到了对GET
的主页的请求,该请求以200
响应,我认为这是我收到html
而不是json
的原因。
请为此提供帮助,或者您是否想绕过端点并发送json数据进行身份验证(推送程序需要正确的数据),而不是从我的web.php
中发送?谢谢。
答案 0 :(得分:1)
您无需绕过端点,而应修改端点以返回正确的数据。 身份验证端点应返回JSON正文以及HTTP代码。 The documentation声明:
来自身份验证端点的成功响应应包含一个 200 OK HTTP状态和以下形式的正文
{ "auth": $AUTHORIZATION_STRING }
这与您收到的错误保持一致,该错误表示应使用JSON,但可以接收HTML。