laravel7.0廣播機制(Redis socket.io)
#廣播服務提供者
在廣播任意事件之前,首先需要註冊App\ Providers\BroadcastServiceProvider
。在新安裝的 Laravel 應用程式中,你只需要取消 config/app.php
設定檔中 providers
陣列內對應服務提供者之前的註解即可。該提供者允許你註冊廣播授權路由和回呼
相關欄位教學推薦:《laravel教學
設定Redis 連線
需要修改.env
檔案中的廣播驅動程式為redis
:
BROADCAST_DRIVER=redis
建立Event
php artisan make:event OrderShipped
執行上訴命令之後app 目錄下會出現一個Events 目錄,在該目錄下產生了廣播事件類別OrderShipped.php
。我們要對自動產生的OrderShipped 類別進行以下修改
增加ShouldBroadcast 的實作
修改broadcastOn 方法,使用公共廣播頻道orderStatus
自訂廣播的訊息名稱(非必須)【預設情況下,Laravel 會使用事件的類別名稱來廣播事件,不過,你可以透過在事件中定義broadcastAs 方法來自訂廣播名稱:】
修改建構子
##完整修改如下可直接取代設定api 路由<?php namespace App\Events; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PresenceChannel; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; class OrderShipped implements ShouldBroadcast { use Dispatchable, InteractsWithSockets, SerializesModels; //可添加任意成员变量 public $id; //事件构造函数 public function __construct($id) { $this->id = $id; } //自定义广播的消息名 public function broadcastAs() { return 'anyName'; } /** * Get the channels the event should broadcast on. * * @return \Illuminate\Broadcasting\Channel|array */ public function broadcastOn() { return new Channel('orderStatus'); } }
Route::get('/ship', function (Request $request) {
$id = $request->input('id');
broadcast(new OrderShipped($id)); // 触发事件
return 'Order Shipped!';
});
安裝前端鷹架
composer require laravel/uiphp artisan ui vue --auth
composer require predis/predis
Redis 廣播使用Redis 的pub/sub 功能進行廣播;不過,你需要將其和能夠接受Redis訊息的Websocket 伺服器進行配對以便將訊息廣播到Websocket 頻道
當Redis 廣播發布事件時,事件將會被發佈到指定的頻道上,傳遞的資料是一個JSON 格式的字串,其中包含了事件名稱、負載資料data、以及產生事件socket ID 的使用者#安裝laravel-echo-server 訂閱Redis Sub如果使用pusher 那麼直接使只用laravel 就可以了,如果使用
Redis socket.io 則需要使用開源專案laravel-echo-server 。所以我們現在要使用laravel-echo-server
npm install -g laravel-echo-server
laravel-echo-server init
// 是否在开发模式下运行此服务器(y/n) 输入y
? Do you want to run this server in development mode? (y/N)// 设置服务器的端口 默认 6001 输入 6001就可以了 或者你想要的
? Which port would you like to serve from? (6001)// 想用的数据库 选择 redis
? Which database would you like to use to store presence channel members? (Use arrow keys)❯ redis
sqlite
// 这里输入 你的laravel 项目的访问域名
? Enter the host of your Laravel authentication server. (http://localhost)// 选择 网络协议 http
? Will you be serving on http or https? (Use arrow keys)❯ http
https
// 您想为HTTP API生成客户端ID/密钥吗 N
? Do you want to generate a client ID/Key for HTTP API? (y/N)// 要设置对API的跨域访问吗?(y/n)N
Configuration file saved. Run laravel-echo-server start to run server.
//您希望将此配置另存为什么? (laravel-echo-server.json)回车就行
? What do you want this config to be saved as? (laravel-echo-server.json)
laravel-echo-server start
- 成功啟動後會輸出以下日誌
L A R A V E L E C H O S E R V E R version 1.6.0 ⚠ Starting server in DEV mode... ✔ Running at localhost on port 6001 ✔ Channels are ready. ✔ Listening for http events... ✔ Listening for redis events... Server ready!
http://yourhost/api/ship?id=16
Channel: laravel_database_orderStatus
Event: anyName
- laravel-echo-server 連線成功!
laravel-echo來收聽廣播,我們選擇的底層實作方式是
socket.io。所以首先我們要在
package.json中加入
laravel-echo 和
socket.io的依賴
npm i --save socket.io-client
npm i --save laravel-echo
import Echo from "laravel-echo";
window.io = require("socket.io-client");
window.Echo = new Echo({
broadcaster: "socket.io",
host: window.location.hostname + ":6001"
});
#测试页面
在 resources/views/
下建立页面 test.blade.php 内容为
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="">
<title>News Room</title>
<link href="" rel="stylesheet">
</head>
<body>
<div class="content">
News Room
</div>
<script src=""></script>
<script>
Echo.channel("laravel_database_orderStatus") // 广播频道名称
.listen(".anyName", e => {
// 消息名称
console.log(e); // 收到消息进行的操作,参数 e 为所携带的数据
});
</script>
</body>
</html>
js 代码的意思是收听 news 通道内的 News 事件对象,将接收到的事件在控制台打印出来。
基本构建
npm install && npm run watch
相关推荐:最新的五个Laravel视频教程
以上是聊聊laravel7.0的廣播機制,總有你想要的!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

ToenhanceGaimentAndCohesionAmongDistributedTeamSbeyondzoom,實施策略:1)組織virtualCoffeebreaksforinfornformalchats,2)useasynchronoustoolslikeslikeslikeslikeslikeslackfornon worksdiscusions,3)3)介紹cristiongamificitygamificationgamificationgamificationgamificationgamificationgamificationwithteamgamegamesorchallengesorchallenges,and4)

Laravel10 IntroducesseveralbreakingChanges:1)Itrequiresphp8.1orhigher,2)TherOuteserviceProviderNowSabootMethodForloadingRoutes,3)thewithtimestamps()MethodOneLoquentRectrationShipsipsississisdeprected,and4))

tomaintainfocusandmotivationInremotework,createStructuredEnvorment,託管式構成,促進性,促進性通過socialescialactionsions andgoalsetting,維持工作勞動生平,維持且蘇聯核酸鹽學。 1)setupadeDedworkspadedworkspacepaceandstickeandsticketicktickticktoorine aroutine。

TofosterCollaboraboraboraboraboraboraboraboraborateMoteTeams,實施策略:1)建立規範的,結構性的通用性在PersonalCheck-Ins,2)Usecollaborativetoolsfortransparenty,3)識別sectizeandcelebrateachivements,和4)FosterActultructulcultultrustrustrustandAdadAptAptaptaptibality。

Laravel的最新版本主要特色包括:1.LaravelOctane提升应用性能,2.改进的模型工厂支持关系和状态定义,3.增强的Artisan命令,4.改进的错误处理,5.新增的Eloquent访问器和修改器。这些功能显著提升了开发效率和应用性能,但需谨慎使用以避免潜在问题。

Tocombatisolationandlonelinessinremotework,companiesshouldimplementregular,meaningfulinteractions,provideequalgrowthopportunities,andusetechnologyeffectively.1)Fostergenuineconnectionsthroughvirtualcoffeebreaksandpersonalsharing.2)Ensureremoteworkers

laravelispularfullull-stackDevelopmentBecapeitOffersAsAseAseAseAseBlendOfbackendEdpoperandPowerandForterFlexibility.1)ITSbackEndCapaPabilities,sightifyDatabaseInteractions.2)thebladeTemplatingEngingEngineAllolowsLows

選擇視頻會議平台的關鍵因素包括用戶界面、安全性和功能。 1)用戶界面應直觀,如Zoom。 2)安全性需重視,MicrosoftTeams提供端到端加密。 3)功能需匹配需求,GoogleMeet適合簡短會議,CiscoWebex提供高級協作工具。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器