LARAVEL TUTORIALS
10 thủ thuật Lavavel giúp bạn code nhanh hơn! Routing trong Laravel, cách tạo Route và sử dung AZ Tạo Middleware trong Laravel đơn giản trong 5 phút Xử lý Authentication và Authorization trong Laravel Event và listener trong Laravel, cách tạo và quản lý cơ bản nhất Tạo broadcast event trong Laravel dễ dàng trong 10 phút Xử lý Form Validation trong Laravel từ A - Z Cách tạo Session và cookie trong Laravel dễ dàng như ăn cháo Top 10 Package Lavavel thường dùng trong dự án Laravel Sử dụng Task trong Laravel đơn giản trong 10 phút. Cách tạo API trong Laravel đơn giản chỉ trong 5 phút Cách tạo job trong Laravel sao cho hiệu quả? Queues trong Laravel, dùng để xử lý các tác vụ mất nhiều thời gian Cache trong Laravel, các loại Cache thường dùng trong Laravel Redis trong Laravel, biết cách sử dung Redis Laravel trong 5 phút Sử dụng Memcache trong Laravel tăng tốc độ truy cập website Unit Test trong Laravel, thực hành tạo testing Laravel A-Z 10 thủ thuật tối ưu quá trình Testing trong Laravel Top 7 thư viện Testing Laravel được dùng nhiều nhất Testbench và Orchestra Testbench trong Laravel, kiểm thử Laravel dễ dàng Cách dùng Browser Testing (Laravel Dusk) trong Laravel Cách tạo test case cho Controller trong Laravel Cách tạo test case cho Model trong Laravel Cách tạo Database Testing trong Laravel Real-time web applications là gì ? Tầm quan trọng trong Laravel Laravel WebSockets, các bước tạo WebSockets trong Laravel Cách dùng Socket.io trong Laravel để tạo ứng dụng realtime Dùng Server-Sent Events trong Laravel để làm ứng dụng realtime Cách dùng Long polling trong Laravel để cải thiện trải nghiệm Cách tích hợp Vue.js vào Laravel và làm một ứng dụng căn bản Task Scheduling là gì? Cấu hình Task Scheduling trong Laravel Cách dùng Queue trong laravel để tạo tác vụ bất đồng bộ Cách dùng Event Sourcing trong Laravel Cách sử dụng CQRS trong Laravel từ A đến Z đơn giản Sử dụng Service Container trong Laravel dễ dàng Cách xử lý đa ngôn ngữ trong Laravel dễ dàng Tìm hiểu và sử dụng Service Provider trong Laravel Facades là gì? Cách dùng Facades trong Laravel Cách sử dụng Email Verification trong Laravel Cách dùng URL Generation trong Larevel Cách sử dụng Error Handling trong Laravel Cách dùng Encryption và decryption trong Laravel Cách sử dụng Relationships trong Laravel Bài 01: Laravel là gì? Hướng dẫn cài đặt laravel trên windows Sử dụng Event trong Laravel Một cách quản lý filter trong Laravel
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Tạo broadcast event trong Laravel dễ dàng trong 10 phút

Broadcast event là một service rất quan trọng trong Laravel, nắm được nó bạn sẽ kết hợp tốt hơn khi làm dự án. Và trong bài này mình sẽ hướng dẫn cách sử dụng chi tiết

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong số các tính năng Laravel, broadcast event là một tính năng rất hữu ích để phát sóng các sự kiện từ máy chủ tới máy khách thông qua các kênh truyền dữ liệu như WebSocket. Broadcast event cho phép bạn tạo ra các ứng dụng web thời gian thực và độc lập với các yêu cầu HTTP truyền thống. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng và tạo broadcast event trong Laravel.

I. Broadcasting là gì trong Laravel?

Broadcasting là một cơ chế cho phép phát sóng các sự kiện từ máy chủ tới các ứng dụng khách thông qua các kênh truyền dữ liệu như WebSocket. Broadcasting giúp cho các ứng dụng web có thể làm việc theo thời gian thực và độc lập với các yêu cầu HTTP truyền thống.

Broadcasting có thể được sử dụng để phát sóng các sự kiện khi một thao tác cập nhật dữ liệu trên máy chủ được thực hiện. Các sự kiện này sẽ được phát sóng tới các ứng dụng khách của bạn, như trình duyệt web hoặc ứng dụng di động, để thông báo về sự thay đổi này. Điều này cho phép các ứng dụng khách của bạn có thể tự động cập nhật dữ liệu mà không cần phải làm mới trang.

Bài viết này được đăng tại [free tuts .net]

Laravel hỗ trợ Broadcasting thông qua nhiều nhà cung cấp như Pusher, Redis, hoặc một kết nối tùy chỉnh của bạn. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng Broadcasting với nhà cung cấp Pusher.

II. Cách dùng Broadcast Event trong Laravel cơ bản

Broadcasting trong Laravel cho phép phát sóng các sự kiện trực tiếp đến khách hàng của ứng dụng thông qua WebSockets. Broadcasting có thể được sử dụng để giải quyết các vấn đề như thông báo trực tiếp, cập nhật trực tuyến và nhắn tin trong thời gian thực.

Để sử dụng Broadcasting trong Laravel, bạn cần cài đặt một số gói Composer và cấu hình ứng dụng của mình. Sau đó, bạn có thể tạo các sự kiện và phát sóng chúng đến khách hàng của mình.

Dưới đây là một ví dụ về cách sử dụng Broadcasting trong Laravel.

Cài đặt gói Broadcasting

Để sử dụng Broadcasting trong Laravel, bạn cần cài đặt gói laravel-websocketspusher/pusher-php-server. Bạn có thể cài đặt chúng bằng cách chạy lệnh sau trên terminal:

composer require beyondcode/laravel-websockets pusher/pusher-php-server

Cấu hình Broadcasting

Sau khi cài đặt gói Broadcasting, bạn cần cấu hình ứng dụng của mình để sử dụng nó. Bạn có thể cấu hình Broadcasting bằng cách thêm các giá trị sau vào tệp .env của mình:

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

Thay thế các giá trị your-app-id, your-app-key, your-app-secret your-app-cluster bằng các thông tin tương ứng của bạn.

Tạo một Event

Sau khi đã cấu hình Broadcasting, bạn có thể tạo các sự kiện và phát sóng chúng đến khách hàng của mình. Để tạo một sự kiện, bạn có thể sử dụng lệnh Artisan sau:

php artisan make:event OrderShipped

Sau khi chạy lệnh này, một tệp app/Events/OrderShipped.php sẽ được tạo ra. Trong tệp này, bạn có thể định nghĩa sự kiện của mình và cung cấp các thông tin cần thiết cho khách hàng của mình.

namespace App\Events;

use App\Models\Order;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class OrderShipped
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $order;

    public function __construct(Order $order)
    {
        $this->order = $order;
    }

    public function broadcastOn()
    {
        return ['orders'];
    }
}

Trong ví dụ này, chúng ta tạo một sự kiện OrderShipped và cung cấp cho nó thông tin về đơn hàng. Trong phương thức broadcastOn(), chúng ta định nghĩa kênh mà sự kiện này sẽ được phát sóng đến. Trong trường hợp này, sự kiện OrderShipped sẽ được phát sóng đến kênh orders.

Event Broadcast

Sau khi đã tạo một sự kiện, bạn có thể phát sóng nó đến khách hàng của mình bằng cách sử dụng hàm broadcast() trong Controller hoặc trong bất kỳ đâu trong ứng dụng của mình.

namespace App\Http\Controllers;

use App\Events\OrderShipped;
use App\Models\Order;
use Illuminate\Http\Request;

class OrderController extends Controller
{
    public function shipOrder(Request $request, $orderId)
    {
        $order = Order::findOrFail($orderId);

        // Ship order...

        event(new OrderShipped($order));

        return redirect('/orders');
    }
}

Trong ví dụ này, chúng ta phát sóng sự kiện OrderShipped sau khi đơn hàng được vận chuyển. Sau đó, chúng ta chuyển hướng người dùng đến trang danh sách đơn hàng.

Listen to the Event

Sau khi đã phát sóng một sự kiện, bạn cần lắng nghe nó để khách hàng của mình có thể nhận được các thông tin mới nhất. Để lắng nghe một sự kiện, bạn có thể sử dụng JavaScript của Pusher trong trang web của mình.

<!DOCTYPE html>
<html>
    <head>
        <title>Laravel Broadcasting Example</title>
        <script src="https://js.pusher.com/7.0/pusher.min.js"></script>
    </head>
    <body>
        <h1>Orders</h1>
        <ul id="orders"></ul>
        <script>
            var pusher = new Pusher('your-app-key', {
                cluster: 'your-app-cluster'
            });

            var channel = pusher.subscribe('orders');
            channel.bind('App\\Events\\OrderShipped', function(data) {
                var order = JSON.stringify(data.order);
                var li = document.createElement('li');
                li.appendChild(document.createTextNode(order));
                document.getElementById('orders').appendChild(li);
            });
        </script>
    </body>
</html>

Trong ví dụ này, chúng ta sử dụng JavaScript của Pusher để lắng nghe sự kiện App\Events\OrderShipped trên kênh orders. Khi một sự kiện được phát sóng, chúng ta sẽ hiển thị đơn hàng tương ứng trong danh sách.

Đó là cách sử dụng Broadcasting trong Laravel để phát sóng các sự kiện trực tiếp đến khách hàng của mình thông qua WebSockets.

III. Các bước tạo Broadcast Event trong Laravel

Để tạo một broadcast event trong Laravel, bạn cần thực hiện các bước sau:

Bước 1: Cài đặt Pusher

Laravel sử dụng Pusher để phát sóng các sự kiện qua WebSockets. Để sử dụng Pusher, bạn cần cài đặt gói pusher/pusher-php-server bằng Composer.

composer require pusher/pusher-php-server

Sau đó, bạn cần đăng ký tài khoản Pusher và tạo ứng dụng. Bạn sẽ nhận được một app_id, app_key, và app_secret cho ứng dụng của mình.

Bước 2: Cấu hình ứng dụng

Sau khi cài đặt Pusher, bạn cần cấu hình ứng dụng của mình để sử dụng Pusher. Trong tệp .env, bạn cần đặt các giá trị sau:

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

Bước 3: Tạo một Event

Sau khi cấu hình ứng dụng, bạn có thể tạo một broadcast event. Một broadcast event là một lớp PHP đại diện cho một sự kiện mà bạn muốn phát sóng đến khách hàng của mình. Lớp này phải triển khai giao diện ShouldBroadcast.

Ví dụ, bạn có thể tạo một broadcast event OrderShipped để thông báo cho khách hàng của bạn rằng đơn hàng của họ đã được vận chuyển.

namespace App\Events;

use App\Models\Order;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class OrderShipped implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $order;

    public function __construct(Order $order)
    {
        $this->order = $order;
    }

    public function broadcastOn()
    {
        return ['orders'];
    }

    public function broadcastAs()
    {
        return 'order.shipped';
    }
}

Trong ví dụ này, chúng ta tạo một broadcast event OrderShipped để thông báo cho khách hàng của chúng ta rằng đơn hàng đã được vận chuyển. Trong phương thức __construct(), chúng ta truyền đối tượng Order vào sự kiện để cung cấp thông tin về đơn hàng cho khách hàng. Sử dụng trait SerializesModels, đối tượng Order sẽ được tự động chuyển đổi thành một mảng dữ liệu có thể được gửi đến khách hàng.

Chúng ta cũng định nghĩa phương thức broadcastOn() để xác

định kênh mà sự kiện sẽ được phát sóng đến. Trong ví dụ này, chúng ta phát sóng sự kiện đến kênh orders.

Cuối cùng, chúng ta định nghĩa phương thức broadcastAs() để xác định tên của sự kiện được phát sóng. Trong ví dụ này, tên của sự kiện được đặt là order.shipped.

Bước 4: Event Broadcast

Sau khi tạo một broadcast event, bạn có thể phát sóng sự kiện bằng cách sử dụng phương thức broadcast().

Ví dụ, để phát sóng sự kiện OrderShipped, bạn có thể sử dụng mã sau:

event(new OrderShipped($order));

Trong đó, $order là một đối tượng đại diện cho đơn hàng đã được vận chuyển.

Khi một sự kiện được phát sóng, Laravel sẽ gửi một yêu cầu HTTP đến máy chủ Pusher để phát sóng sự kiện đến khách hàng của bạn. Khách hàng sẽ nhận được sự kiện thông qua WebSocket và có thể xử lý sự kiện theo cách tùy ý.

Bước 5: Xử lý Event trên máy khách

Để xử lý sự kiện trên máy khách, bạn cần đăng ký một người nghe (listener) cho sự kiện trong JavaScript.

Ví dụ, để xử lý sự kiện order.shipped được phát sóng từ kênh orders, bạn có thể sử dụng mã sau:

Echo.channel('orders')
    .listen('.order.shipped', (data) => {
        console.log('Order shipped:', data);
    });

Trong đó, Echo là một đối tượng JavaScript được cung cấp bởi thư viện Pusher, cho phép bạn kết nối đến máy chủ Pusher và lắng nghe các sự kiện. channel('orders') sẽ đăng ký người nghe cho kênh orders, trong khi .listen('.order.shipped', (data) => { ... }) sẽ xử lý sự kiện order.shipped được phát sóng trên kênh orders. Dữ liệu được truyền đến từ sự kiện sẽ được chuyển đến hàm callback (data) => { ... }, nơi bạn có thể xử lý sự kiện theo cách tùy ý.

Đó là cách bạn tạo và sử dụng broadcast event trong Laravel.

Kết thúc bài viết

Trong bài viết này, chúng ta đã tìm hiểu cách sử dụng và tạo broadcast event trong Laravel. Broadcasting là một tính năng mạnh mẽ của Laravel cho phép phát sóng các sự kiện từ máy chủ tới các ứng dụng khách thông qua các kênh truyền dữ liệu như WebSocket. Broadcasting giúp cho các ứng dụng web có thể làm việc theo thời gian thực và độc lập với các yêu cầu HTTP truyền thống.

Để sử dụng Broadcasting trong Laravel, bạn cần phải cấu hình Broadcasting và tạo một broadcast event để phát sóng các sự kiện từ máy chủ. Sau đó, bạn có thể phát sóng các sự kiện từ máy chủ và xử lý các sự kiện trên máy khách.

Trong bài viết này, chúng ta đã tìm hiểu cách sử dụng Broadcasting với nhà cung cấp Pusher. Tuy nhiên, Laravel cũng hỗ trợ Broadcasting với các nhà cung cấp khác như Redis hoặc một kết nối tùy chỉnh của bạn.

Tổng kết lại, Broadcasting là một tính năng rất hữu ích của Laravel để phát sóng các sự kiện trong ứng dụng web. Nó giúp cho ứng dụng web của bạn có thể làm việc theo thời gian thực và độc lập với các yêu cầu HTTP truyền thống, cung cấp cho người dùng trải nghiệm tốt hơn.

# Top 2 bài tutorials cách sử dụng và tạo Broadcast Event trong Laravel.

1. Để hiểu hơn về cách sử dụng của Broadcasting trong Laravel giúp xây dựng chat box thì bạn nên xem thử

Link bài viết :https://hoclaravel.net/tong-quan/su-dung-broadcast-trong-larvel-xay-dung-u/

2. Để biết được Broadcasting hoạt động ra sao thì bạn nên xem hướng dẫn ở bài biết dưới đây

Link bài viết : https://code.tutsplus.com/vi/tutorials/how-laravel-broadcasting-works--cms-30500

Một số câu hỏi thường gặp về Broadcasting trong Laravel

Câu 1: Laravel sử dụng giao thức nào để Broadcasting?

Laravel sử dụng giao thức WebSocket để Broadcasting. WebSocket là một giao thức truyền tải dữ liệu hai chiều giữa client và server, cho phép truyền tải dữ liệu thời gian thực giữa các bên mà không cần phải tải lại trang. WebSocket cho phép kết nối hai chiều giữa client và server, cho phép server gửi thông tin đến client mà không cần client yêu cầu, và ngược lại. WebSocket cung cấp một phương thức kết nối duy trì trên cùng một kết nối mạng, cho phép server gửi dữ liệu đến client mà không cần client gửi yêu cầu. Laravel sử dụng giao thức WebSocket để truyền tải dữ liệu thời gian thực giữa các client và server, cho phép các ứng dụng web cập nhật nội dung mà không cần phải tải lại trang.

Câu 2: Tôi có thể sử dụng Broadcasting với các ứng dụng mobile?

Có thể. Broadcasting có thể được sử dụng với các ứng dụng mobile bằng cách sử dụng một giao thức khác gọi là Pusher. Pusher là một dịch vụ trực tuyến cho phép truyền tải dữ liệu thời gian thực giữa các client và server. Laravel cung cấp tích hợp với Pusher để sử dụng Broadcasting trong các ứng dụng mobile. Bạn có thể sử dụng Laravel Echo để kết nối ứng dụng mobile với Pusher. Bằng cách này, bạn có thể truyền tải dữ liệu thời gian thực giữa các client và server của ứng dụng mobile.

Câu 3 : Có cần cài đặt thêm gì để sử dụng Broadcasting trong Laravel không?

Có, để sử dụng Broadcasting trong Laravel, bạn cần cài đặt và cấu hình một số thứ như sau:

  1. Cài đặt Laravel Echo: Laravel Echo là một package được cung cấp bởi Laravel, giúp kết nối ứng dụng của bạn với server để truyền tải dữ liệu thời gian thực.

  2. Cài đặt và cấu hình Pusher: Pusher là một dịch vụ trực tuyến cho phép truyền tải dữ liệu thời gian thực giữa các client và server. Bạn cần đăng ký tài khoản Pusher và cấu hình ứng dụng của bạn để sử dụng Pusher.

  3. Cấu hình Broadcasting trong Laravel: Bạn cần cấu hình Laravel để sử dụng Broadcasting thông qua các file cấu hình như broadcasting.phpapp.php.

  4. Tạo các kênh (channels): Các kênh là nơi truyền tải dữ liệu thời gian thực giữa client và server. Bạn cần tạo các kênh cho các loại dữ liệu khác nhau để truyền tải giữa các client và server.

Sau khi cài đặt và cấu hình các thành phần trên, bạn có thể sử dụng Broadcasting trong Laravel để truyền tải dữ liệu thời gian thực giữa các client và server.

Cùng chuyên mục:

Cách sử dụng Relationships trong Laravel

Cách sử dụng Relationships trong Laravel

Cách dùng Encryption và decryption trong Laravel

Cách dùng Encryption và decryption trong Laravel

Cách sử dụng Error Handling trong Laravel

Cách sử dụng Error Handling trong Laravel

Cách dùng URL Generation trong Larevel

Cách dùng URL Generation trong Larevel

Cách sử dụng Email Verification trong Laravel

Cách sử dụng Email Verification trong Laravel

Facades là gì? Cách dùng Facades trong Laravel

Facades là gì? Cách dùng Facades trong Laravel

Tìm hiểu và sử dụng Service Provider trong Laravel

Tìm hiểu và sử dụng Service Provider trong Laravel

Sử dụng Service Container trong Laravel dễ dàng

Sử dụng Service Container trong Laravel dễ dàng

Cách xử lý đa ngôn ngữ trong Laravel dễ dàng

Cách xử lý đa ngôn ngữ trong Laravel dễ dàng

Cách sử dụng CQRS trong Laravel từ A đến Z đơn giản

Cách sử dụng CQRS trong Laravel từ A đến Z đơn giản

Cách dùng Event Sourcing trong Laravel

Cách dùng Event Sourcing trong Laravel

Task Scheduling là gì? Cấu hình Task Scheduling trong Laravel

Task Scheduling là gì? Cấu hình Task Scheduling trong Laravel

Cách dùng Queue trong laravel để tạo tác vụ bất đồng bộ

Cách dùng Queue trong laravel để tạo tác vụ bất đồng bộ

Cách tích hợp Vue.js vào Laravel và làm một ứng dụng căn bản

Cách tích hợp Vue.js vào Laravel và làm một ứng dụng căn bản

Cách dùng Long polling trong Laravel để cải thiện trải nghiệm

Cách dùng Long polling trong Laravel để cải thiện trải nghiệm

Dùng Server-Sent Events trong Laravel để làm ứng dụng realtime

Dùng Server-Sent Events trong Laravel để làm ứng dụng realtime

Cách dùng Socket.io trong Laravel để tạo ứng dụng realtime

Cách dùng Socket.io trong Laravel để tạo ứng dụng realtime

Laravel WebSockets, các bước tạo WebSockets trong Laravel

Laravel WebSockets, các bước tạo WebSockets trong Laravel

Real-time web applications là gì ? Tầm quan trọng  trong Laravel

Real-time web applications là gì ? Tầm quan trọng trong Laravel

Cách tạo Database Testing trong Laravel

Cách tạo Database Testing trong Laravel

Top