订阅私人频道时出现Pusher / Laravel回显错误:订阅频道的Auth值无效:格式应为“ key:signature”

时间:2019-01-02 14:15:58

标签: php reactjs laravel pusher laravel-echo

我在使用 React应用程序中的PusherJS订阅私人频道时遇到麻烦。

后端是Laravel,但我很确定后端/前端技术不会对这一问题有所贡献

我正在使用 JWT 令牌进行身份验证,该部分似乎一切正常。整个应用程序运行良好,但是我正在尝试向系统添加套接字。

我将在此处提供我的后端和前端代码段,因为我可以肯定这是问题所在。

前端

const Socket = new Echo({
  broadcaster: 'pusher',
  key: config.pusher.key,
  cluster: config.pusher.cluster,
  authEndpoint: config.pusher.authEndpoint,
  forceTLS: config.pusher.tls,
  auth: {
    headers: {
      Authorization: `Bearer ${token}`,
    },
  },
});

Socket.private('users.1').listen('newMessage', (data) => {
    console.log(data);
})

后端身份验证端点

public function authorize(Request $request) {
    echo Pusher::socket_auth($request->get('channel_name'), $request->get('socket_id'));
    return;
}

auth端点有效,返回数据如下:

{auth: ":2535a2ea3a1ee8f461ceef3a95095518c0205949aa981e6f2xxxxx"}

在控制台中,我可以看到前端应用程序已成功连接Pusher

  

按钮:状态已更改:正在连接->已连接新的套接字ID xxxxxx.xxxxxx

但是订阅失败

  

推送器:发送的事件:{“ event”:“ pusher:subscribe”,“ data”:{“ auth”:“:2535a2ea3a1ee8f461ceef3a9​​5095518c0205949aa981e6f2xxxxx”,“ channel”:“ private-users.1”}}

     

推送器:事件记录:{“事件”:“推送器:错误”,“数据”:{“代码”:null,“消息”:“用于订阅私人用户的授权值。1无效:应为格式为'key:signature'“}}

     

Pusher:错误:{“ type”:“ WebSocketError”,“ error”:{“ type”:“ PusherError”,“ data”:{“ code”:null,“ message”:“订阅的验证值private-users.1无效:其格式应为'key:signature'“}}}

我尝试仅使用 PusherJS软件包,但遇到了同样的问题。现在我尝试使用Laravel Echo,结果是一样的。 同样重要的是,当我订阅一个非私人频道时,订阅工作正常,并且可以通过该频道成功接收消息。

推式调试日志仅告诉我同一件事:

  

订阅私人用户的身份验证值。1无效:应采用'key:signature'格式

我已经调试了几个小时,我不知道从这里去哪里。

1 个答案:

答案 0 :(得分:0)

您的身份验证端点似乎未正确响应。您的密钥,机密和appID是否在服务器端正确配置?集群怎么样?这个服务器和客户端配置正确了吗?