Rumah pembangunan bahagian belakang tutorial php Mengkonfigurasi Reverb dalam Laravel dengan Apache

Mengkonfigurasi Reverb dalam Laravel dengan Apache

Dec 19, 2024 am 07:33 AM

Configuring Reverb in Laravel with Apache

Reverb ialah alternatif praktikal kepada Pusher untuk penyiaran acara masa nyata dalam Laravel. Panduan ini menumpukan pada mengkonfigurasi Reverb dalam Laravel 11 untuk sistem pengeluaran langsung yang dihoskan di belakang Cloudflare dengan SSL Fleksibel.

Prasyarat

Sebelum menyelam ke dalam persediaan, pastikan anda mempunyai perkara berikut:

  1. Laravel 11 dipasang: Anda boleh menyediakan aplikasi Laravel 11 baharu menggunakan Komposer.
  2. Pelayan web Apache: Pastikan Apache dipasang dan berjalan.
  3. Akaun Cloudflare: Aplikasi anda harus disediakan di belakang Cloudflare dengan SSL Fleksibel didayakan.

Pasang Reverb

Untuk bermula, anda perlu memasang Reverb dalam projek Laravel anda. Jalankan arahan Komposer berikut:

1

composer require laravel/reverb

Salin selepas log masuk

Selepas pemasangan, terbitkan fail konfigurasi:

1

php artisan vendor:publish --provider="Laravel\Reverb\ReverbServiceProvider"

Salin selepas log masuk

Ini akan mencipta fail config/reverb.php di mana anda boleh melaraskan tetapan Reverb.

Contoh Konfigurasi Reverb

Berikut ialah konfigurasi contoh untuk Reverb:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

<?php

 

return [

 

    'default' => env('REVERB_SERVER', 'reverb'),

 

    'servers' => [

 

        'reverb' => [

            'host' => env('REVERB_HOST', '0.0.0.0'),

            'port' => env('REVERB_PORT', 6001),

            'hostname' => env('REVERB_HOST'),

            'options' => [

                'tls' => [],

            ],

            'max_request_size' => env('REVERB_MAX_REQUEST_SIZE', 10_000),

            'scaling' => [

                'enabled' => env('REVERB_SCALING_ENABLED', false),

                'channel' => env('REVERB_SCALING_CHANNEL', 'reverb'),

                'server' => [

                    'url' => env('REDIS_URL'),

                    'host' => env('REDIS_HOST', '127.0.0.1'),

                    'port' => env('REDIS_PORT', '6379'),

                    'username' => env('REDIS_USERNAME'),

                    'password' => env('REDIS_PASSWORD'),

                    'database' => env('REDIS_DB', '0'),

                ],

            ],

            'pulse_ingest_interval' => env('REVERB_PULSE_INGEST_INTERVAL', 15),

            'telescope_ingest_interval' => env('REVERB_TELESCOPE_INGEST_INTERVAL', 15),

        ],

 

    ],

 

    'apps' => [

 

        'provider' => 'config',

 

        'apps' => [

            [

                'key' => env('REVERB_APP_KEY'),

                'secret' => env('REVERB_APP_SECRET'),

                'app_id' => env('REVERB_APP_ID'),

                'options' => [

                    'host' => env('REVERB_HOST'),

                    'port' => env('REVERB_PORT', 443),

                    'scheme' => env('REVERB_SCHEME', 'https'),

                    'useTLS' => env('REVERB_SCHEME', 'https') === 'https',

                ],

                'allowed_origins' => ['*'],

                'ping_interval' => env('REVERB_APP_PING_INTERVAL', 60),

                'activity_timeout' => env('REVERB_APP_ACTIVITY_TIMEOUT', 30),

                'max_message_size' => env('REVERB_APP_MAX_MESSAGE_SIZE', 10_000),

            ],

        ],

 

    ],

 

];

Salin selepas log masuk

.env Tetapan

Pastikan pembolehubah persekitaran berikut dikonfigurasikan dengan betul dalam fail .env anda:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

BROADCAST_CONNECTION=reverb

QUEUE_CONNECTION=database

 

REVERB_HOST=127.0.0.1

REVERB_PORT=6001

REVERB_APP_ID=<app-key>

REVERB_APP_KEY=<app-key>

REVERB_APP_SECRET=<app-secret>

REVERB_SCHEME=http

 

VITE_REVERB_APP_KEY="${REVERB_APP_KEY}"

VITE_REVERB_HOST="example.com"

VITE_REVERB_PORT=443

VITE_REVERB_SCHEME=https

Salin selepas log masuk

Mencipta Acara

Gunakan perintah Artisan berikut untuk menjana kelas acara baharu:

1

php artisan make:event MessageSent

Salin selepas log masuk

Berikut ialah contoh pelaksanaan acara MessageSent:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<?php

 

namespace App\Events;

 

use Illuminate\Broadcasting\InteractsWithSockets;

use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

use Illuminate\Foundation\Events\Dispatchable;

use Illuminate\Queue\SerializesModels;

use Illuminate\Broadcasting\Channel;

 

class MessageSent implements ShouldBroadcast

{

    use Dispatchable, InteractsWithSockets, SerializesModels;

 

    public $message;

 

    public function __construct($message)

    {

        $this->message = $message;

    }

 

    public function broadcastOn(): Channel

    {

        return new Channel('chat-channel');

    }

 

    public function broadcastAs(): string

    {

        return 'message-sent';

    }

}

Salin selepas log masuk

Contoh Bilah Laravel

Buat templat Blade mudah untuk menguji kefungsian Reverb (welcome.blade.php):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta name="csrf-token" content="{{ csrf_token() }}">

    <title>Laravel Reverb WebSocket Test</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/pusher/8.3.0/pusher.min.js"></script>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/laravel-echo/1.17.1/echo.iife.min.js"></script>

</head>

<body>

    <h1>Laravel Reverb WebSocket Test</h1>

    <p>Open the console to see WebSocket messages.</p>

    <button>

 

 

 

<h2>

   

   

  Defining Routes

</h2>

 

<p>Below is the code to define the required routes:<br>

</p>

 

<pre class="brush:php;toolbar:false">&lt;?php

 

use Illuminate\Support\Facades\Route;

use App\Events\MessageSent;

 

Route::post('/send-message', function (\Illuminate\Http\Request $request) {

 

    event(new MessageSent($request-&gt;input('message')));

 

    return response()-&gt;json(['success' =&gt; true]);

 

});

 

Route::get('/', function () { return view('welcome'); });

Salin selepas log masuk

Konfigurasi Apache

Jalankan arahan berikut untuk mendayakan modul Apache yang diperlukan:

1

2

3

sudo a2enmod proxy

sudo a2enmod proxy_wstunnel

sudo a2enmod rewrite

Salin selepas log masuk

Di bawah ialah contoh konfigurasi untuk persediaan Apache VirtualHost anda:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

&lt;VirtualHost *:80&gt;

    ServerAdmin admin@example.com

    ServerName example.com

    DocumentRoot /var/www/example.com/public

 

    ProxyPreserveHost On

    ProxyRequests Off

    ProxyPass /app ws://127.0.0.1:6001/app

    ProxyPassReverse /app ws://127.0.0.1:6001/app

 

    SetEnvIf X-Forwarded-Proto https HTTPS=on

 

    ErrorLog /var/www/logs/example.com_error.log

    CustomLog /var/www/logs/example.com_access.log combined

&lt;/VirtualHost&gt;

 

&lt;Directory /var/www/example.com&gt;

    Options -Indexes +FollowSymLinks -MultiViews

    AllowOverride All

    Require all granted

&lt;/Directory&gt;

Salin selepas log masuk

Perkhidmatan Menjalankan

Untuk memulakan perkhidmatan, anda perlu melancarkan pekerja acara dan pelayan Rebel.
Jalankan arahan berikut untuk memulakan pekerja acara:

1

php artisan queue:work

Salin selepas log masuk

Gunakan arahan di bawah untuk memulakan pelayan Rebel pada port dan hos yang ditentukan:

1

php artisan reverb:start --port=6001 --host=0.0.0.0

Salin selepas log masuk

Kesimpulan

Jika anda tidak menggunakan CDN untuk Laravel Echo dan Pusher, anda perlu memasang pustaka npm yang diperlukan (pusher-js dan laravel-echo) untuk menyepadukan penyiaran acara masa nyata ke dalam aplikasi anda. Persediaan ini memerlukan proses binaan bahagian hadapan untuk mengurus dan menggabungkan perpustakaan dalam projek anda.

Untuk aplikasi yang dihoskan di belakang Cloudflare dengan SSL Penuh, VirtualHost yang berasingan mesti dikonfigurasikan dengan sijil SSL yang ditakrifkan dengan betul. Ini memastikan komunikasi WebSocket selamat dan mengelakkan isu dengan ketidakpadanan SSL/TLS, yang boleh menghalang sambungan WebSocket daripada berfungsi dengan betul.

Atas ialah kandungan terperinci Mengkonfigurasi Reverb dalam Laravel dengan Apache. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

11 skrip pemendek URL terbaik PHP (percuma dan premium) 11 skrip pemendek URL terbaik PHP (percuma dan premium) Mar 03, 2025 am 10:49 AM

11 skrip pemendek URL terbaik PHP (percuma dan premium)

Bekerja dengan Data Sesi Flash di Laravel Bekerja dengan Data Sesi Flash di Laravel Mar 12, 2025 pm 05:08 PM

Bekerja dengan Data Sesi Flash di Laravel

Pengenalan kepada API Instagram Pengenalan kepada API Instagram Mar 02, 2025 am 09:32 AM

Pengenalan kepada API Instagram

Respons HTTP yang dipermudahkan dalam ujian Laravel Respons HTTP yang dipermudahkan dalam ujian Laravel Mar 12, 2025 pm 05:09 PM

Respons HTTP yang dipermudahkan dalam ujian Laravel

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React Mar 04, 2025 am 09:33 AM

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Mar 14, 2025 am 11:42 AM

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST

12 skrip sembang php terbaik di codecanyon 12 skrip sembang php terbaik di codecanyon Mar 13, 2025 pm 12:08 PM

12 skrip sembang php terbaik di codecanyon

Pemberitahuan di Laravel Pemberitahuan di Laravel Mar 04, 2025 am 09:22 AM

Pemberitahuan di Laravel

See all articles