微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel + Pusher 预期参数 2 是一个数组,在实时聊天中给出的字符串

如何解决Laravel + Pusher 预期参数 2 是一个数组,在实时聊天中给出的字符串

我一直在关注这个 blog post 由 pusher 在他们的官方网站上使用 laravel + pusher 构建基本的聊天应用程序。

我已经根据博客彻底遵循了每一步,我会到处搜索,因为那里没有提到一些细节。

我可以在用户之间发送消息(保存在数据库表中)但不能在用户端实时更新。

以下是我按下发送消息按钮时收到的错误消息:

enter image description here

这是我编写的代码文件中的片段。

事件/MessageSent.PHP

use App\User;
use App\Message;
class MessageSent implements Shouldbroadcast
{
  use dispatchable,InteractsWithSockets,SerializesModels;
  public $user;
  public $message;

 public function __construct(User $user,Message $message)
 {
    $this->message = $message;
    $this->user = $user;
 }

 public function broadcastOn()
 {
    return new PrivateChannel('chat');
 }
}

broutes/channels.PHP

broadcast::channel('chat',function ($user) {
  return Auth::check();
});

web.PHP

Auth::routes();
Route::get('/','ChatsController@index');
Route::get('messages','ChatsController@fetchMessages');
Route::post('messages','ChatsController@sendMessage');

ChatsController.PHP

use App\Events\MessageSent;
use App\Message;
use Illuminate\Http\Request;
use Auth;
class ChatsController extends Controller
{
  public function __construct()
  {
    $this->middleware('auth');
  }

  public function index()
  {
    return view('chat');
  }

  public function fetchMessages()
  {
    return Message::with('user')->get();
  }

  public function sendMessage(Request $request)
  {
    $user = Auth::user();

    $message = $user->messages()->create([
        'message' => $request->message,]);

    broadcast(new MessageSent($user,$message))->toOthers();
    
    return ['status' => 'Message Sent!'];
  }
}

我使用的是 Laravel 5.5 版,pusher 6.1。

这篇博文是为 laravel 5.4 和 pusher 2.6 编写的。

是版本差异导致了这个问题吗? 感谢您的帮助。

解决方法

解决办法是降级pusher版本。

composer require pusher/pusher-php-server ^4.1

仍会为最新版本寻找合适的答案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。