Pusher auth端点使用html响应,如何解决此问题?

时间:2019-03-27 08:39:04

标签: laravel pusher

我目前正在使用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中发送?谢谢。

1 个答案:

答案 0 :(得分:1)

您无需绕过端点,而应修改端点以返回正确的数据。 身份验证端点应返回JSON正文以及HTTP代码。 The documentation声明:

  

来自身份验证端点的成功响应应包含一个   200 OK HTTP状态和以下形式的正文
  { "auth": $AUTHORIZATION_STRING }

这与您收到的错误保持一致,该错误表示应使用JSON,但可以接收HTML。