在Laravel中实现实时通讯,你可以使用Laravel Echo和Pusher或Laravel Websockets。下面是使用这两种方法的简要步骤:
安装依赖
在你的Laravel项目中,使用Composer安装Laravel Echo和Pusher PHP服务器客户端:
composer require pusher/pusher-php-server
配置Pusher
在.env文件中,设置Pusher的相关配置:
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=your_pusher_app_id
PUSHER_APP_KEY=your_pusher_app_key
PUSHER_APP_SECRET=your_pusher_app_secret
PUSHER_APP_CLUSTER=your_pusher_app_cluster
在config/broadcasting.php文件中,配置Pusher广播驱动:
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => true,
],
],
安装Laravel Echo
使用npm或yarn安装Laravel Echo和相关的依赖:
npm install --save laravel-echo pusher-js
或者
yarn add laravel-echo pusher-js
配置Laravel Echo
在resources/js/bootstrap.js文件中,配置Laravel Echo:
import Echo from 'laravel-echo';
import Pusher from 'pusher-js';
window.Pusher = Pusher;
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
encrypted: true,
});
监听事件
在你的JavaScript代码中,监听Laravel事件:
Echo.private('channel-name')
.listen('EventName', (e) => {
console.log(e);
});
触发事件
在你的Laravel代码中,触发事件:
use App\Events\YourEvent;
event(new YourEvent($data));
安装依赖
在你的Laravel项目中,使用Composer安装Laravel Websockets:
composer require beyondcode/laravel-websockets
发布配置文件
发布Laravel Websockets的配置文件:
php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider"
运行WebSocket服务器
在项目根目录下,运行WebSocket服务器:
php artisan websockets:serve
配置Laravel广播
在.env文件中,设置广播驱动为pusher:
BROADCAST_DRIVER=pusher
在config/broadcasting.php文件中,配置Pusher广播驱动:
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => true,
],
],
监听事件
与使用Laravel Echo和Pusher的方法相同。
触发事件
与使用Laravel Echo和Pusher的方法相同。
这样,你就可以在Laravel项目中实现实时通讯功能了。