laravel的PresenceChannel加入不工作。

问题描述 投票:1回答:1

这是客户端的js

  let user_id = $('meta[name="user-id"]').attr('content');
  let channel = Echo.join('user-' + user_id);
    channel.here((user) => {
      console.log('Here');
      console.log(user);
    })
    .joining((user) => {
        console.log('joining');
        console.log(user);
    })
    .leaving((user) => {
        console.log('leaving');
        console.log(user);
    });

在laravel的echo服务器上显示了这个错误

 [11:48:15 AM] - wLO1jq5fW9p_8lOnAAAS left channel: presence-user-1 (transport close)
(node:24532) UnhandledPromiseRejectionWarning: TypeError: Cannot convert undefined or null to object
    at /usr/local/lib/node_modules/laravel-echo-server/dist/channels/presence-channel.js:78:21
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
(node:24532) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 18)
[11:48:17 AM] - Preparing authentication request to: http://asapp.buginsoft.kz
[11:48:17 AM] - Sending auth request to: http://asapp.buginsoft.kz/broadcasting/auth

[11:48:17 AM] - W3CiOs736gv0o0OwAAAT authenticated for: presence-user-1
Unable to join channel. Member data for presence channel missing
[11:48:17 AM] - W3CiOs736gv0o0OwAAAT joined channel: presence-user-1

这是我的MessageSent事件

public function __construct($message,$id)
{
    $this->message = $message;
    $this->id = $id;
}

public function broadcastOn()
{
    return new PresenceChannel('user-'.$this->id);
}

这是我的控制台.php

Broadcast::channel('user-{id}', function ($user, $id) {
    return (int) $user->id === (int) $id;
});

但我的控制台是清晰的,并没有显示加入等的日志。

laravel echo laravel-echo
1个回答
1
投票

在你的广播回调中,你返回了一个布尔值,这个布尔值是由私有频道询问的。但是当你验证一个存在渠道时,如果用户被允许,你必须返回一个关于这个用户的数据数组。

https:/laravel.comdocs7.xbroadcasting#authorizing-presence-channels。

© www.soinside.com 2019 - 2024. All rights reserved.