首页主机资讯centos中laravel如何实现实时通讯

centos中laravel如何实现实时通讯

时间2025-12-17 21:50:04发布访客分类主机资讯浏览479
导读:在CentOS系统中,要在Laravel中实现实时通讯,你可以使用Laravel Echo和Laravel Websockets。以下是实现实时通讯的步骤: 安装Laravel Echo和Laravel Websockets: 首先,确...

在CentOS系统中,要在Laravel中实现实时通讯,你可以使用Laravel Echo和Laravel Websockets。以下是实现实时通讯的步骤:

  1. 安装Laravel Echo和Laravel Websockets:

首先,确保你已经安装了Node.js和NPM。然后,在你的Laravel项目中运行以下命令来安装Laravel Echo和Laravel Websockets:

npm install --save laravel-echo pusher-js
npm install --save-dev laravel-websockets
  1. 配置Laravel Websockets:

在CentOS系统中,首先需要安装RabbitMQ或Redis作为消息队列。这里以RabbitMQ为例:

sudo yum install epel-release
sudo yum install rabbitmq-server
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server

接下来,安装laravel-websockets扩展:

composer require beyondcode/laravel-websockets

然后,在config/app.php中注册服务提供者:

'providers' =>
     [
    // ...
    BeyondCode\LaravelWebSockets\WebSocketsServiceProvider::class,
],

接着,在config/broadcasting.php中配置广播驱动为pusher,并设置相关参数:

'connections' =>
     [
    // ...
    '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,
            'host' =>
     env('PUSHER_APP_HOST', '127.0.0.1'),
            'port' =>
     env('PUSHER_APP_PORT', 6001),
            'scheme' =>
     env('PUSHER_APP_SCHEME', 'https'),
        ],
    ],
],

最后,在.env文件中设置相关环境变量:

BROADCAST_DRIVER=pusher
PUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret
PUSHER_APP_CLUSTER=your-app-cluster
  1. 配置Laravel Echo:

resources/js/bootstrap.js文件中,配置Laravel Echo以使用Pusher:

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,
}
    );
    
  1. 创建事件和监听器:

使用Artisan命令创建事件和监听器:

php artisan make:event MessageSent
php artisan make:listener SendMessage --event=MessageSent

app/Events/MessageSent.php中定义事件:

namespace App\Events;
    

use Illuminate\Broadcasting\Channel;
    
use Illuminate\Queue\SerializesModels;
    
use Illuminate\Foundation\Events\Dispatchable;
    
use Illuminate\Broadcasting\PrivateChannel;
    
use Illuminate\Broadcasting\PresenceChannel;
    
use Illuminate\Foundation\BroadcastsNeedsUser;


class MessageSent
{
    
    use Dispatchable, InteractsWithSockets, SerializesModels, BroadcastsNeedsUser;
    

    public $message;


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

    }


    public function broadcastOn()
    {
    
        return new PrivateChannel('channel-name');

    }

}
    

app/Listeners/SendMessage.php中定义监听器:

namespace App\Listeners;
    

use App\Events\MessageSent;
    
use Illuminate\Contracts\Queue\ShouldQueue;
    
use Illuminate\Queue\InteractsWithQueue;


class SendMessage
{

    public function handle(MessageSent $event)
    {

        // 处理接收到的消息
    }

}
    

app/Providers/EventServiceProvider.php中注册监听器:

protected $listen = [
    MessageSent::class =>
     [
        SendMessage::class,
    ],
];
    
  1. 触发事件:

在你的应用程序中,当需要发送消息时,触发MessageSent事件:

event(new MessageSent($message));
    
  1. 前端监听事件:

在你的前端代码中,监听MessageSent事件:

import Echo from 'laravel-echo';
    

window.Echo.private('channel-name')
    .listen('MessageSent', (e) =>
 {
    
        console.log(e.message);

    }
    );
    

现在,当MessageSent事件被触发时,前端将实时接收到消息。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos中laravel如何实现实时通讯
本文地址: https://pptw.com/jishu/774381.html
CentOS与ThinkPHP兼容性问题怎么解决 centos下laravel如何实现报表生成

游客 回复需填写必要信息