WebSocket 允许双向通信:服务器可以向浏览器发送消息,而浏览器(客户端)可以通过相同的连接进行响应。
我正在使用以下方法在 Laravel 6 中实现聊天应用程序:
Laravel Echo JavaScript 包(不是 laravel-echo-server),
Laravel 网络套接字
推送器-js。
我已经得到它的工作,服务器触发事件和客户端监听这些事件如下。
安装 Laravel WebSockets 包。
composer require beyondcode/laravel-websockets
配置config/broadcasting.php.
'pusher' => [
'driver' => 'pusher',
'key' => xxx,
'secret' => xxx,
'app_id' => xxx,
'options' => [
'cluster' => xxx,
'encrypted' => true,
'useTLS' => true,
'host' => '127.0.0.1',
'port' => 6001,
'scheme' => 'https',
],
],
]
配置config/websockets.php
'apps' => [
[
'id' => xxx,
'name' => xxx,
'key' => xxx,
'secret' => xxx,
'enable_client_messages' => true,
'enable_statistics' => true,
],
],
安装Pusher服务器。
composer require pusher/pusher-php-server "~3.0"
设置广播驱动程序以pusher在.env文件中使用。
BROADCAST_DRIVER=pusher
在我的客户端使用laravel-echo和。pusher-js
import Echo from "laravel-echo"
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'your-pusher-key',
wsHost: window.location.hostname,
wsPort: 6001,
disableStats: true,
});
启动 WebSockets 服务器。
php artisan websockets:serve
在服务器端,使用实现类的事件类触发事件ShouldBroadcastNow。
event(new MyEventClass((object)$message));
一切正常。在第 8 步中,我从服务器端触发事件。
请注意,我没有使用官方的 Pusher 服务器,我只是使用 Pusher API 实现,pusher-js但指向Laravel Echo JavaScript package本地Laravel WebSockets server,在步骤 6 中配置。
请不要Laravel Echo JavaScript package与laravel-echo-serverof混淆Socket.IO Server。我没有使用Socket.IO Server.
现在,我不想像第 8 步那样在服务器端触发事件,而是想从客户端触发事件,因为 WebSocket 允许双向通信。我怎么能用 , 做到Laravel这Laravel Echo JavaScript Package一点Laravel WebSockets PHP package?
一只萌萌小番薯
肥皂起泡泡
万千封印
波斯汪