首頁 php框架 Laravel 詳解Laravel-echo-server怎麼搭建即時應用

詳解Laravel-echo-server怎麼搭建即時應用

Sep 28, 2021 pm 07:42 PM
laravel 即時應用

下面由Laravel教學專欄為大家介紹一下使用 Laravel-echo-server 建立即時應用的方法,希望對大家有幫助!

詳解Laravel-echo-server怎麼搭建即時應用

在我看來,即時通訊才是 APP 應用的未來。 Socket  服務通常不是那麼容易實現,但是 Laravel Echo 服務改變了這個情況。

在本文中,我將會簡要的介紹如何建立一個可以運行的 Socket 服務並且在這個服務上進行事件的廣播。 (https://github.com/tlaverdure/laravel-echo-server, Laravel 的支援文件: https://learnku.com/docs/laravel/5.6/broadcasting#driver-prerequisites)

它是完全免費的,你只要運行你自己的Socket 服務。你也可以使用 Laravel 預設整合的 Pusher ,唯一的缺點是它是有限制的,如果超出限制則需要付費。我比較喜歡自己來架構這些東西。

要求:

  • Laravel 框架(本教學使用了5.6 版本)
  • Redis 服務
  • 基本的Laravel 知識

安裝laravel-echo-server

首先我們需要全域安裝laravel-echo-server ,你只需在終端機輸入下面的命令。

 $ npm install -g laravel-echo-server
登入後複製

安裝完成後,打開你的Laravel 應用,或新啟動一個測試項目:

 $ composer create-project --prefer-dist laravel/laravel echo-test
登入後複製

接下來為我們的應用程式安裝Predis :

 $ composer require predis/predis
登入後複製

安裝完成後,切換到專案根目錄下,初始化Socket 服務:

 $ laravel-echo-server init
登入後複製

執行這條命令後,會詢問你一些關於Socket 服務的配置信息,你可以根據自己的情況填寫:

詳解Laravel-echo-server怎麼搭建即時應用

#記得在生產環境中,無論你何時使用它,都應該關掉你的開發者模式。

我們可以嘗試啟動服務,看看它是否正常運作:

$ laravel-echo-server start
登入後複製

輸出結果看起來像這樣:

詳解Laravel-echo-server怎麼搭建即時應用

設定Laravel 讓Laravel Echo Server 正常運作

打開你的 config/app.php 檔案並且取消BroadcastServiceProvider 在這個Providers 陣列中的註解:

##App\Providers\BroadcastServiceProvider::class,

這個Provider 將會啟動廣播路由(你或許已經在

routes/channels.php 文件裡面已經看到了)

打開

.env  文件,修改 BROADCAST_DRIVER 的值為你在laravel-echo-server初始化時定義的值(Redis 或Log)。在本教程中我們將使用 Redis 驅動程式。 同時修改  
QUEUE_DRIVER 為你喜歡的任何隊列驅動程序,在這個示例中你可以輕鬆的將其更改為 Redis 驅動程序,因為你在前面已經安裝並且在運行了。

接下來我們必須安裝Socket.io 用戶端和Laravel-Echo 套件,你可以透過以下操作來安裝:

$ npm install --save socket.io-client
$ npm install --save laravel-echo
登入後複製
(在運行這個之前你可能需要執行 

npm install  來安裝Laravel 及相關依賴)

接下來開啟 

resources/assets/js/bootstrap.js  文件, 或是你自己的引入所有JS 基礎程式碼的JS 檔案。

現在我們要新增啟動 Echo 基礎服務的程式碼:

import Echo from 'laravel-echo'

window.io = require('socket.io-client');
window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001'
});
登入後複製
現在我們準備在頻道上監聽訊息了!我會在本教程中解釋怎麼開放頻道,接下來開始收聽我們的第一個頻道:

window.Echo.channel('test-event')
    .listen('ExampleEvent', (e) => {
        console.log(e);
    });
登入後複製
我們透過JS 程式碼告訴程式我們訂閱了名為'test-event' 的頻道, 並監聽'ExampleEvent' 事件(這是事件的類別名,你也可以根據你的需求自訂)。

讓我們建立這個事件類別:

$ php artisan make:event ExampleEvent
登入後複製
這將會在 

App/Events 目錄下方建立一個叫做ExampleEvent.php 的事件類讓我們對這個事件類別稍作調整使得它能夠在我們的Socket 服務中能夠正常運行,首先確保你的事件類繼承於
ShouldBroadcast 接口,就像下面這樣;

class ExampleEvent implements ShouldBroadcast

接下來向下捲動找到 

broadcastOn  函數,修改它使得我們能夠在正確的頻道上進行廣播:

public function broadcastOn()
{
    return new Channel('test-event');
}
登入後複製
讓我們在下面新建一個函數,這樣我們才能有一些實例資料:

public function broadcastWith()
{
    return [
        'data' => 'key'
    ];
}
登入後複製
這個函數在事件被調用時調用,它將會把資料傳回你的Socket 服務。

現在讓我們開始嘗試它吧!打開你的

routes/web.php 檔案並且新增一個測試路由:

Route::get('test-broadcast', function(){
    broadcast(new \App\Events\ExampleEvent);
});
登入後複製

(有很多种方式来广播 ExampleEvent  类 ,在这个示例中我使用 Laravel 提供的 broadcast() 助手,在我看来这是最简洁的方式)

启动队列监听:

$ php artisan queue:listen --tries=1
登入後複製

浏览器打开一个包含 JS 文件的页面(可以是 Laravel 默认的欢迎页面),这是第一个页面,请不要关闭次页面,我们已经在此页面上订阅了 Socket 服务。

接下来打开另一个页面访问  /test-broadcast ,这将会返回一个空白页面,但是它将会通过你的 ExampleEvent  类广播到你的 Socket 服务上。返回到我们的第一个页面,打开浏览器控制台,应该可以看到类似信息:

詳解Laravel-echo-server怎麼搭建即時應用

正如你所看到的,数据通过这种形式展示在我们的客户端。你能输入任意数据通过你的  ExampleEvent 类来广播他们,这些数据可以是新闻更新,页面更新,总浏览量或者更多。

因为我们有在 laravel-echo-server 配置中有设置开发者模式,所以你能看到 Socket 服务上的所有基本信息:

詳解Laravel-echo-server怎麼搭建即時應用

现在你已经安装并运行了一个基本的 Socket 服务!但这并不是全部,你可以根据这个来做更多的事情,比如为单个用户提供认证的私有渠道。(当您想广播订单更新或私人消息时)

要做到这一点,我建议你去查看 Laravel 文档了解更多相关的内容。通过这个主题你能做很多事情,让你的应用程序变得更加神奇。你可以在这里找到相应的文档:

Broadcasting - Laravel - The PHP framework for web artisans.laravel.com

其他: 在生产环境中运行

正如我之前所说,你必须在 laravel-echo-server.json 配置文件中禁用开发者模式。 当然在服务器上你可以忽略这个文件,重新初始化它,因为你的主机可能和本地不同。

你还需要保持你的 Socket 服务在你的生产环境中运行,你可以用 Supervisor ,但是我通常使用 PM2  ,它可以方便快速的管理你的服务。 (http://pm2.keymetrics.io/)

这里是我使用 PM2 的 Socket.sh 基本配置:

#!/usr/bin/env bash

laravel-echo-server  start
登入後複製

安装了 PM2 后, 你可以通过 pm2 start socket.sh 命令来启动脚本,运行你的 Socket 服务。

我希望它能够帮助到你。 这篇文章主要介绍的是一些基础知识,接下来我们会继续讨论广播路由的授权和不同的广播频道。

感谢你的阅读!

英文原文地址:https://medium.com/@dennissmink/laravel-echo-server-how-to-24d5778ece8b

译文地址:https://learnku.com/laravel/t/13101/using-laravel-echo-server-to-build-real-time-applications

更多编程相关知识,请访问:编程视频!!

以上是詳解Laravel-echo-server怎麼搭建即時應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1249
24
laravel入門實例 laravel入門實例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

解決 Craft CMS 中的緩存問題:使用 wiejeben/craft-laravel-mix 插件 解決 Craft CMS 中的緩存問題:使用 wiejeben/craft-laravel-mix 插件 Apr 18, 2025 am 09:24 AM

在使用CraftCMS開發網站時,常常會遇到資源文件緩存的問題,特別是當你頻繁更新CSS和JavaScript文件時,舊版本的文件可能仍然被瀏覽器緩存,導致用戶無法及時看到最新的更改。這個問題不僅影響用戶體驗,還會增加開發和調試的難度。最近,我在項目中遇到了類似的困擾,經過一番探索,我找到了wiejeben/craft-laravel-mix這個插件,它完美地解決了我的緩存問題。

Laravel如何學習 怎麼免費學習Laravel Laravel如何學習 怎麼免費學習Laravel Apr 18, 2025 pm 12:51 PM

想要學習 Laravel 框架,但苦於沒有資源或經濟壓力?本文為你提供了免費學習 Laravel 的途徑,教你如何利用網絡平台、文檔和社區論壇等資源,從入門到掌握,為你的 PHP 開發之旅奠定堅實基礎。

laravel用戶登錄功能 laravel用戶登錄功能 Apr 18, 2025 pm 12:48 PM

Laravel 提供了一個全面的 Auth 框架,用於實現用戶登錄功能,包括:定義用戶模型(Eloquent 模型)創建登錄表單(Blade 模板引擎)編寫登錄控制器(繼承 Auth\LoginController)驗證登錄請求(Auth::attempt)登錄成功後重定向(redirect)考慮安全因素:哈希密碼、防 CSRF 保護、速率限制和安全標頭。此外,Auth 框架還提供重置密碼、註冊和驗證電子郵件等功能。詳情請參閱 Laravel 文檔:https://laravel.com/doc

laravel框架安裝方法 laravel框架安裝方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

laravel有哪些版本 laravel新手版本選擇方法 laravel有哪些版本 laravel新手版本選擇方法 Apr 18, 2025 pm 01:03 PM

在面向初学者的 Laravel 框架版本选择指南中,本文深入探討了 Laravel 的版本差異,旨在協助初學者在眾多版本之間做出明智的選擇。我們將重點介紹每個版本的關鍵特徵、比較它們的優缺點,並提供有用的建議,幫助新手根據他們的技能水準和項目需求挑選最合適的 Laravel 版本。對於初學者來說,選擇一個合適的 Laravel 版本至關重要,因為它可以顯著影響他們的學習曲線和整體開發體驗。

laravel怎麼查看版本號 laravel查看版本號方法 laravel怎麼查看版本號 laravel查看版本號方法 Apr 18, 2025 pm 01:00 PM

Laravel框架內置了多種方法來方便地查看其版本號,滿足開發者的不同需求。本文將探討這些方法,包括使用Composer命令行工具、訪問.env文件或通過PHP代碼獲取版本信息。這些方法對於維護和管理Laravel應用程序的版本控制至關重要。

laravel和thinkphp的區別 laravel和thinkphp的區別 Apr 18, 2025 pm 01:09 PM

Laravel 和 ThinkPHP 都是流行的 PHP 框架,在開發中各有優缺點。本文將深入比較這兩者,重點介紹它們的架構、特性和性能差異,以幫助開發者根據其特定項目需求做出明智的選擇。

See all articles