Tác giả. Kofi Ocran. Tôi là một kỹ sư phần mềm xây dựng các sản phẩm và dịch vụ bằng công nghệ web. Tôi chiếm vị trí quan trọng giữa công nghệ phần mềm và khoa học dữ liệu và tìm hiểu thêm bằng cách chia sẻ kiến thức của mình thông qua các bài báo kỹ thuật
Giới thiệu
Laravel là một ngôn ngữ mạnh mẽ nhằm làm cho quá trình phát triển web trở nên đơn giản mà không làm mất chức năng của ứng dụng. Điều này đặc biệt đúng khi bạn cố gắng xây dựng ứng dụng trò chuyện video Laravel
Trước đây, tôi đã xây dựng ứng dụng trò chuyện WebRTC/Laravel và viết về nó tại đây. Thêm trò chuyện video vào ứng dụng Laravel của bạn. WebRTC chỉ là một trong những cách mà mọi người có thể triển khai các tính năng trò chuyện video. Các công ty như Agora cũng cung cấp SDK trò chuyện video được đóng gói đầy đủ để cung cấp trải nghiệm trò chuyện video Tương tác thời gian thực chất lượng cao. Là một người có kinh nghiệm phát triển WebRTC, tôi có thể nói với bạn rằng có một số hạn chế với WebRTC, chẳng hạn như
- Chất lượng trải nghiệm. Vì WebRTC được truyền qua Internet, đây là miền công cộng nên chất lượng trải nghiệm khó có thể đảm bảo
- khả năng mở rộng. Khả năng mở rộng khá hạn chế đối với các cuộc gọi video nhóm do tính chất ngang hàng của WebRTC
Sau khi tôi được giới thiệu về Agora, tôi đã rất ấn tượng rằng việc thiết lập tính năng cuộc gọi điện video tương tự với Agora dễ dàng hơn so với WebRTC. Hãy để tôi hướng dẫn bạn qua hướng dẫn ứng dụng trò chuyện Laravel với Agora
Tại sao Agora là giải pháp ưa thích
Sau khi tạo ứng dụng trò chuyện Laravel với Agora, tôi muốn nêu bật một số ưu điểm
- Có một SDK cho mọi thứ — giọng nói, video, phát trực tiếp, chia sẻ màn hình, v.v.
- Tôi không phải thiết lập một máy chủ rẽ với coturn trên Amazon EC2 như tôi đã làm trong triển khai khác để chuyển tiếp lưu lượng giữa các đồng nghiệp trên các mạng khác nhau
- Bạn nhận được 10.000 phút miễn phí mỗi tháng và điều này mang lại cho bạn sự linh hoạt để phát triển nguyên mẫu giải pháp của mình miễn phí
- Bạn không gặp khó khăn trong việc quản lý cơ sở hạ tầng cơ bản hỗ trợ chức năng cuộc gọi điện video
- Tài liệu API trực quan có sẵn
điều kiện tiên quyết
- Một dự án Laravel có xác thực VueJs với một số người dùng đã tạo. Bạn có thể tải xuống dự án cơ sở sau để bắt đầu. Người khởi xướng Laravel 8 Vue Auth
- Hiểu biết về hệ thống phát sóng và sự kiện của Laravel và WebSockets nói chung
- Truy cập vào tài khoản Pusher miễn phí trên Pusher. com
- Tài khoản Agora. Cách bắt đầu với Agora
Thiết lập dự án
- Mở thiết bị đầu cuối hoặc bảng điều khiển của bạn và điều hướng đến thư mục dự án Laravel của bạn
- Cài đặt các gói cần thiết
composer require pusher/pusher-php-server "~4.0"
npm install --save laravel-echo pusher-js
- Tải xuống mã nguồn AgoraDynamicKey PHP từ kho lưu trữ Agora. AgoraDynamicKey
Giữ thư mục đã tải xuống ở vị trí bên ngoài thư mục dự án. Một số tệp từ thư mục sẽ được sao chép vào dự án của chúng tôi khi chúng tôi định cấu hình phần cuối.
Định cấu hình phần cuối
Chúng tôi sẽ thiết lập các bộ điều khiển và lớp khác nhau với các phương thức cần thiết để tạo mã thông báo Agora để thiết lập cuộc gọi. Hệ thống Broadcast của Laravel cũng sẽ được kích hoạt
Chúng tôi bắt đầu với các điểm cuối sẽ được truy cập từ giao diện người dùng
1. Thêm các tuyến ứng dụng
Thêm đoạn mã sau vào route/web. php
2. Kích hoạt hệ thống Broadcast của Laravel
Bỏ ghi chú BroadcastServiceProvider trong config/app. phpin thư mục dự án của bạn
Change
//App\Providers\BroadcastServiceProvider::class
to
App\Providers\BroadcastServiceProvider::class
3. Tạo kênh hiện diện trong các tuyến/kênh. php
Chúng tôi làm quen với người dùng trực tuyến bằng cách xem ai đã đăng ký kênh này ở giao diện người dùng. Chúng tôi trả lại ID và tên của họ
4. Tạo một sự kiện để thực hiện cuộc gọi có tên MakeAgoraCall
Sự kiện này sẽ được sử dụng để thực hiện cuộc gọi bằng cách phát một số dữ liệu qua kênh agora-online.
Chạy lệnh sau trong thiết bị đầu cuối/bảng điều khiển của bạn.
php artisan make:event MakeAgoraCall
Thêm đoạn mã sau vào MakeAgoraCall. php
5. Thêm các tệp trình tạo AgoraDynamicKey đã tải xuống
- Mở dòng lệnh của bạn và trong thư mục ứng dụng của dự án, tạo thư mục có tên Lớp cùng với thư mục con có tên AgoraDynamicKey
cd app
mkdir -p Class/AgoraDynamicKey
- Mở thư mục AgoraDynamicKey đã được tải xuống trong quá trình thiết lập dự án. Tiếp theo, sao chép AccessToken. php và RtcTokenBuilder. php từ thư mục src vào thư mục AgoraDynamicKey đã được tạo ở bước trước
- Mở AccessToken. php và RtcTokenBuilder. php và thêm không gian tên của dự án để giúp chúng có thể truy cập được trong bộ điều khiển
RtcTokenBuilder. php trở thành
Truy cập thẻ. php trở thành
6. Tạo AgoraVideoController. php
Tiếp theo, tạo AgoraVideoController bằng dòng lệnh
php artisan make:controller AgoraVideoController
Thêm đoạn mã sau vào AgoraVideoController. php
Phân tích các phương thức trong AgoraVideoController
4. Để xem trang cuộc gọi videoChange
//App\Providers\BroadcastServiceProvider::class
to
App\Providers\BroadcastServiceProvider::class
0. Để tạo mã thông báo động Agora. Mã tạo mã thông báo được lấy từ mẫu/RtcTokenBuilderSample. php, có thể tìm thấy trong các tệp được tải xuống trong quá trình thiết lập dự ánChange
//App\Providers\BroadcastServiceProvider::class
to
App\Providers\BroadcastServiceProvider::class
1. Để gọi một người dùng cụ thể bằng cách phát sự kiện MakeAgoraCall trên kênh hiện diện của Laravel mà tôi đã đặt tên là agora-online-channel. Tất cả người dùng đã đăng nhập đăng ký và lắng nghe các sự kiện trên kênh nàyChange
//App\Providers\BroadcastServiceProvider::class
to
App\Providers\BroadcastServiceProvider::class
Dữ liệu nhận được từ MakeAgoraEvent bởi người dùng đã đăng ký kênh agora-online chứa thông tin sau
2. Đây là ID riêng của người dùng được cho là sẽ nhận cuộc gọi từ người gọiChange
//App\Providers\BroadcastServiceProvider::class
to
App\Providers\BroadcastServiceProvider::class
3. Đây là kênh cuộc gọi mà người gọi đã tham gia ở giao diện người dùng. Đây là kênh được tạo bằng Agora SDK ở giao diện người dùng. Đây là phòng mà người gọi đã tham gia, đang chờ người được gọi cũng tham gia để thiết lập kết nối cuộc gọiChange
//App\Providers\BroadcastServiceProvider::class
to
App\Providers\BroadcastServiceProvider::class
4. ID của người gọiChange
//App\Providers\BroadcastServiceProvider::class
to
App\Providers\BroadcastServiceProvider::class
Từ MakeAgoraEvent, người dùng có thể xác định xem họ có được gọi hay không nếu giá trị userToCall khớp với ID của họ. Chúng tôi hiển thị thông báo cuộc gọi đến với một nút để chấp nhận cuộc gọi. Họ biết ai là người gọi theo giá trị của from
Định cấu hình giao diện người dùng
Chúng tôi sẽ tạo giao diện người dùng ứng dụng trò chuyện Laravel để thực hiện và nhận cuộc gọi video với khả năng chuyển đổi trạng thái bật và tắt của máy ảnh và micrô
1. Thêm một liên kết đến Agora SDK
Thêm đoạn sau < script src=”https. //cdn. khoảng trống. io/sdk/phát hành/AgoraRTCSDK-3. 3. 1. js”> vào thẻ đầu của tài nguyên/lượt xem/bố cục/ứng dụng. lưỡi. php
Sau đó nó trở thành
2. Khởi tạo Laravel Echo và Pizer
Khởi tạo Laravel Echo và Pusher trong resource/js/bootstrap. js bằng cách bỏ ghi chú khối mã JavaScript sau
3. Tạo thành phần trò chuyện Agora
Trên thiết bị đầu cuối hoặc dòng lệnh của bạn, hãy tạo một thành phần có tên là AgoraChat. vue bằng lệnh sau
Change
//App\Providers\BroadcastServiceProvider::class
to
App\Providers\BroadcastServiceProvider::class
0Thêm đoạn mã sau
Phân tích thành phần AgoraChat
Trên trang AgoraChat, chúng tôi hiển thị các nút có tên của từng người dùng đã đăng ký và hiện tại họ đang trực tuyến hay ngoại tuyến
Để thực hiện cuộc gọi, chúng tôi nhấp vào nút của người dùng có trạng thái trực tuyến. Người dùng trực tuyến cho biết người sẵn sàng nhận cuộc gọi. Đối với bản demo của chúng tôi, chúng tôi thấy một danh sách người dùng. Người dùng có tên Bar được chỉ định là đang trực tuyến. Người gọi có tên Foo có thể gọi Bar bằng cách nhấp vào nút
Bar nhận được thông báo cuộc gọi đến với các nút Chấp nhận và Từ chối và tên của người gọi
Từ hình ảnh thông báo cuộc gọi ở trên, chúng ta thấy tên người gọi là Foo. Sau đó, thanh có thể chấp nhận cuộc gọi để thiết lập kết nối
Sơ đồ sau đây giải thích logic cuộc gọi theo mã
4. Đăng ký AgoraChat. thành phần vue
Thêm đoạn mã sau vào resource/js/app. js
5. Tạo chế độ xem trò chuyện Agora
Trên thiết bị đầu cuối hoặc dòng lệnh của bạn, hãy tạo chế độ xem có tên là agora-chat. lưỡi. php bằng lệnh sau
Change
//App\Providers\BroadcastServiceProvider::class
to
App\Providers\BroadcastServiceProvider::class
1Thêm đoạn mã sau vào agora-chat. lưỡi. php
6. Cập nhật các biến env bằng các phím Pusher và Agora
Các. env nằm ở thư mục gốc của thư mục dự án của bạn. Thêm thông tin đăng nhập bạn nhận được từ Agora và Pizer
thử nghiệm
- Khởi động máy chủ phát triển Laravel từ thiết bị đầu cuối của bạn
Change
//App\Providers\BroadcastServiceProvider::class
to
App\Providers\BroadcastServiceProvider::class
2- Mở một thiết bị đầu cuối khác và chạy giao diện người dùng
Change
//App\Providers\BroadcastServiceProvider::class
to
App\Providers\BroadcastServiceProvider::class
3- Mở hai trình duyệt khác nhau hoặc hai phiên bản của cùng một trình duyệt, với một phiên bản ở chế độ ẩn danh và truy cập http. //127. 0. 0. 1. 8000/agora-chat
- Bạn sẽ thấy một trang đăng nhập nếu bạn chưa đăng nhập
- Sau khi đăng nhập thành công, bạn sẽ tự động được chuyển hướng đến trang trò chuyện video, tại đây bạn sẽ thấy các nút có tên của người dùng với chỉ báo về trạng thái trực tuyến của họ
- Trong mỗi trình duyệt bạn đã mở, những người dùng khác đã đăng ký trên ứng dụng được hiển thị như mô tả trong bước 5
- Trong một trình duyệt, bạn có thể gọi cho người dùng đã đăng nhập trên trình duyệt kia bằng cách nhấp vào nút có tên của họ
- Người dùng khác được nhắc nhấp vào nút Chấp nhận để thiết lập đầy đủ cuộc gọi
Video Trình diễn Cuộc gọi Video
Để xác nhận rằng bản demo của bạn đang hoạt động bình thường, hãy xem video demo của tôi như một ví dụ về giao diện và chức năng của dự án đã hoàn thành. Cuộc gọi video Agora Demo
Phần kết luận
Bây giờ bạn đã triển khai tính năng trò chuyện video trong trò chuyện Laravel. Nó không khó lắm đúng không?
Để bao gồm tính năng gọi điện trong ứng dụng web phát video trực tuyến Laravel, bạn không cần phải xây dựng nó từ đầu
Agora cung cấp rất nhiều tính năng tuyệt vời, tất cả trong một gói. Nó cũng giúp doanh nghiệp tiết kiệm thời gian phát triển khi triển khai trò chuyện video vào các ứng dụng hiện có. Điều duy nhất một nhà phát triển phải làm là xây dựng một giao diện người dùng hấp dẫn — Agora xử lý phần cuối trò chuyện video