Menjalankan Laravel WebSockets secara Offline

Laravel WebSockets bisa dijalankan secara offline tanpa memerlukan layanan pihak ketiga seperti Pusher. Laravel WebSockets adalah solusi yang bisa berfungsi sebagai server WebSocket mandiri di server lokal atau server yang kamu kelola, sehingga kamu dapat menggunakannya tanpa koneksi internet atau layanan cloud.

  • Kelebihan Laravel WebSockets secara Offline:
  • Tidak perlu layanan eksternal: Kamu tidak memerlukan layanan pihak ketiga seperti Pusher, sehingga semua komunikasi real-time bisa dilakukan di server lokal.
  • Pengembangan lokal: Kamu dapat menjalankan server WebSocket di lingkungan pengembangan (local development) tanpa internet.
  • Menghemat biaya: Tidak perlu membayar layanan pihak ketiga untuk pengiriman pesan real-time.
  • Kontrol penuh: Kamu memiliki kontrol penuh terhadap server WebSocket, sehingga bisa dikonfigurasi sesuai kebutuhan aplikasi.

Langkah untuk Menjalankan Laravel WebSockets Secara Offline

1. Instal Laravel WebSockets

Pertama, instal Laravel WebSockets di proyek Laravel kamu:

composer require beyondcode/laravel-websockets

2. Publikasikan Konfigurasi

Publikasikan file konfigurasi dan file migrasi:

php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="config"

php artisan migrate

3. Konfigurasi Pusher secara Lokal

Meskipun kita tidak menggunakan layanan Pusher, Laravel WebSockets tetap menggunakan driver Pusher untuk kompatibilitas dengan Laravel Echo. Kamu bisa menggunakan pengaturan berikut di file .env:

BROADCAST_DRIVER=pusher

PUSHER_APP_ID=local-app-id

PUSHER_APP_KEY=local-app-key

PUSHER_APP_SECRET=local-app-secret

PUSHER_APP_CLUSTER=mt1

Di file config/broadcasting.php, pastikan kamu mengkonfigurasi pusher untuk menggunakan server WebSocket lokal:

'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' => false,

        'host' => '127.0.0.1',

        'port' => 6001,

        'scheme' => 'http',

        'encrypted' => false,

    ],

],

Dengan pengaturan ini, aplikasi akan menggunakan server WebSocket lokal yang berjalan di port 6001 tanpa memerlukan TLS (karena dijalankan secara offline).

4. Menjalankan Server WebSocket

Jalankan server WebSocket menggunakan perintah:

php artisan websockets:serve

Ini akan memulai server WebSocket yang berjalan di localhost pada port 6001.

5. Mengonfigurasi Laravel Echo di Frontend

Di sisi frontend, gunakan Laravel Echo untuk mendengarkan event dari WebSocket lokal. Misalnya, di file app.js atau bootstrap.js, inisialisasi Laravel Echo seperti ini:

import Echo from 'laravel-echo';

window.Pusher = require('pusher-js');

window.Echo = new Echo({

    broadcaster: 'pusher',

    key: process.env.MIX_PUSHER_APP_KEY, // Sesuaikan dengan .env kamu

    wsHost: window.location.hostname,

    wsPort: 6001,

    forceTLS: false,  // Nonaktifkan TLS untuk offline

    disableStats: true,

});

Dengan konfigurasi ini, frontend akan mendengarkan event dari server WebSocket lokal tanpa memerlukan koneksi internet.

6. Broadcast Event

Gunakan event broadcasting di Laravel seperti biasa. Contoh sederhana untuk broadcast event ke frontend:

use App\Events\MessageSent;

// Kirim pesan ke channel chat

broadcast(new MessageSent('Hello, this is a message'))->toOthers();

Di sisi frontend, kamu bisa mendengarkan event yang dikirim:

window.Echo.channel('chat-channel')

    .listen('.message.sent', (e) => {

        console.log(e.message);

    });


Posting Komentar

Lebih baru Lebih lama