gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

教你用laravel-websockets搞個“低配”廣播系統

本篇文章給大家帶來了關于Laravel的相關知識,其中主要介紹了怎么用laravel-websockets來實現一個“低配版”廣播系統,感興趣的朋友一起來看一下吧,希望對大家有幫助。

教你用laravel-websockets搞個“低配”廣播系統

前言

網上找了好幾個教程都沒成功,然后死磕一個教程不斷研究最終成功了。然后就寫了這篇教程,希望能幫到跟我一樣笨的人。另外希望不要誤導到讀者。希望讀者最好不要過于信任我的這個教程。我其實是稀里糊涂地成功的,我的這個教程可能也有坑。還有一點是我覺得我研究的過程好像收獲挺大的,如果時間充裕的話建議自己研究。

教程的開頭我先大致介紹一下我是怎么搞出這個教程介紹的方法的。我建議看教程的人重視一下這部分,因為我懷疑 Laravel 或者相關的庫一更新可能又會出現不兼容或者錯亂的情況,然后就又有問題了。到時候可能就需要讀者自行研究了。

為什么說是大致介紹呢,因為很多地方我感覺都是我瞎貓碰死耗子蒙出來的。另外可能需要一些無法言說的經驗吧。

盡量縮小實驗的對象的規模,找步驟少的教程

剛開始我是照著官方文檔中文版做的,后來發現這個實在是太復雜了,可能錯一步就會失敗。而且有的時候連錯誤提示也沒有,就算有錯誤提示不是搜不到就是有太多回答完全不一樣的問題。如果盡量縮小規模的話,應該就能盡量少踩點坑了。

將任務分解得可以獲得子任務成功的反饋

剛開始我是一步一步跟著做,然后最后看是否成功,后來發現這種方法太低效了。然后我發現某些子步驟是可以通過一些方法判斷是否成功的,比如 laravel-websockets 安裝成功之后能打開那個 dashboard。就是 /laravel-websockets 。另外還有發送廣播的代碼如果成功了的話可以在前面說的那個 dashboard 里看到效果。最后就是全部成功就能在瀏覽器里看到效果了。所以后來我如果當前階段沒有成功就不會繼續做下去了,繼續研究本階段哪里錯了。

多打 Log

我是通過打 Log 發現客戶端的 Echo 根本沒有初始化成功的,因為少個參數。之前好像也有個錯誤提示,但是我好像沒看懂。通過在初始化 Echo 的前后分別輸出兩條不一樣的 Log,我發現只有前一條執行了,后一條根本沒執行,所以得出了程序遇到錯誤就停止執行了的結論。

對被實驗的對象盡量熟悉起來

比如我沒搜索到某條報錯的相關信息。但是后來發現里面的某個詞在配置里出現過,改了一下那個配置就好了。就是這個:“Uncaught Options object must provide a cluster”。不過后來我在網上發現個跟我一樣的方法,沒準我之前看過那個方法,可能是因為樓主說沒用所以我就沒試。

多綜合各方信息,特別是那些成功的

雖然不一定能拿來就用,甚至可能會產生誤導,但是我相信信息多一些還是更有助于解決問題的。比如我就在嗶哩嗶哩上搜過“laravel 廣播”看過幾個視頻。還搜索了一些非官方文檔的教程。

如果搜錯誤提示沒有用的東西或者搜索結果太多就看看代碼

不過我感覺這條有用的概率不大,實在沒招了再用吧。我是通過這個方法發現我在取消注釋代碼的時候少取消注釋了一行,然后出現了很奇怪的錯誤提示。

就算成功了也不要高興得太早,多練習幾遍

步驟越多越容易出問題,這個廣播系統的步驟是真多。多練習也能多熟悉一點。

盡量選擇更新的教程

我一般在搜索引擎里加個一年內的條件。

面向搜索引擎編程

感覺這次大概有一半以上的問題都是通過搜索引擎解決的吧,完全自己解決的部分好像很少。

本體

我這個教程某些方面比較啰嗦,是從創建項目開始的,另外還提到了配置數據庫。水平比較高的讀者可以忽略一些內容。至于高端的讀者應該用不著看我的這種東西。不過我對命令的介紹基本沒有,有需求建議去看下面的英文文章。
備忘

我這個是公共頻道的。還有隊列用的是默認的 sync,據說只能用于開發環境。總之我這個教程應該是挺殘廢的,但是跑通了應該就可以以此為起點根據官方文檔實驗新的配置和添加新的功能了。

我的這個教程主要參考自這篇文章:How to use Laravel WebSockets。

創建項目

在 Apache24htdocs 或者類似的地方運行下面的命令:

composer create-project laravel/laravel bc
登錄后復制

在項目路徑中運行以下命令:

php artisan serve
登錄后復制

注意運行完上面的命令當前命令行窗口一般就不能運行命令了,需要重啟一個命令行窗口。想要在繼續在當前命令行窗口運行命令除非配合后臺運行的命令。

配置數據庫信息

在配置數據庫之前需要創建一個數據庫,我用的是 test。不過就算不創建在 migrate 的時候也會提示創建。這個差點就忘了,因為之前一直沒有刪除這個數據庫。

.env

DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=testDB_USERNAME=rootDB_PASSWORD=1234
登錄后復制

注意要填你的數據庫的實際的信息,別照抄我的配置。

安裝服務器端包 beyondcode/laravel-websockets

在項目路徑中運行以下命令:

composer require beyondcode/laravel-websockets php artisan vendor:publish --provider="BeyondCodeLaravelWebSocketsWebSocketsServiceProvider" --tag="migrations"php artisan migrate php artisan vendor:publish --provider="BeyondCodeLaravelWebSocketsWebSocketsServiceProvider" --tag="config"
登錄后復制

安裝 pusher

在項目路徑中運行以下命令:

composer require pusher/pusher-php-server
登錄后復制

注意這條我跟我參考的那篇文章不一樣,我這個安裝的應該是最新版的。原文好像指定版本了。

配置 Laravel WebSockets

.env

BROADCAST_DRIVER=pusherPUSHER_APP_ID=12345PUSHER_APP_KEY=ABCDEFGPUSHER_APP_SECRET=HIJKLMNOPPUSHER_HOST=127.0.0.1PUSHER_PORT=6001PUSHER_SCHEME=httpPUSHER_APP_CLUSTER=mt1
登錄后復制

注意這里跟我參考的那篇英文文章也不一樣,我強迫癥,感覺改 .env 更優雅一些。畢竟其他地方都會優先讀 .env。感覺 .env 更像是函數,一個地方改動了不用修改所有調用的地方。感覺前一句有點問題,大概就是那個意思吧。

再注意一下第二條到第四條的值是隨便填的。

運行 Laravel WebSockets 服務器

在項目路徑中運行以下命令:

php artisan websockets:serve
登錄后復制

這個也是運行之后當前命令行窗口就不能輸入命令了。【推薦學習:laravel視頻教程】

之后在瀏覽器地址欄輸入 127.0.0.1:8000/laravel-websockets 就能看前面的操作是否成功了。如果你不是通過“php artisan serve”運行的服務器的話可能端口會不一樣。點擊那個 Connect 按鈕如果在 Events 下面出現一些東西應該就是階段性成功了。注意這個網頁在沒那個啥的情況下打開是非常慢的,至少在我這里很慢。因為里面有個 js 庫的下載速度很慢。注意下面的改 blade 模板的行為是可選的!另外我不知道下面的那個 cdn 有沒有問題,畢竟好像不是大廠的 cdn。如果你嫌慢又不想那個啥的話可以將 vendorbeyondcodelaravel-websocketsresourcesviewsdashboard.blade.php 中的

<script  src="https://www.php.cn/link/19e0c9edc141240b5de750fa83ba1bed"></script>
登錄后復制

換成

<script  src="https://cdn.bootcdn.net/ajax/libs/plotly.js/2.17.0/plotly.min.js"></script>
登錄后復制

我是通過用 VS Code 搜索功能直接搜索 cdn.plot.ly/plotly-latest.min.js 搜出來這個文件的。另外是在火狐的開發者工具的網絡中發現這個 js 庫加載速度慢的。另外這種直接改這種地方的文件應該是不太優雅。

創建事件

在項目路徑中運行以下命令:

php artisan make:event NewTrade
登錄后復制

appEventsNewTrade.php

<?php namespace AppEvents;use IlluminateBroadcastingChannel; use IlluminateBroadcastingInteractsWithSockets; use IlluminateBroadcastingPresenceChannel; use IlluminateBroadcastingPrivateChannel; use IlluminateContractsBroadcastingShouldBroadcast;use IlluminateFoundationEventsDispatchable; use IlluminateQueueSerializesModels; class NewTrade implements ShouldBroadcast{     use Dispatchable, InteractsWithSockets, SerializesModels;      public $trade;      /**      * Create a new event instance.      *      * @return void      */     public function __construct($trade)     {         $this->trade = $trade;     }      /**      * Get the channels the event should broadcast on.      *      * @return IlluminateBroadcastingChannel|array      */     public function broadcastOn()     {         return new Channel('trades');     }}
登錄后復制

在項目路徑中運行以下命令:

php artisan tinker
登錄后復制

運行這條命令后會啟動 Laravel 的交互式解釋器,我理解就是輸入一些語句可以直接執行。另外還有一些其他的實用的命令。這個也是運行之后當前命令行窗口就不能輸入正常的系統命令了,但是這個命令行窗口之后要輸入 php 語句。順便說一下,VS Code 里的終端在 tinker 里沒法 Ctrl + V,但是右鍵是粘貼的功能。

然后在上面的執行過 php artisan tinker 的那個命令行窗口運行以下命令:

event (new AppEventsNewTrade('test'))
登錄后復制

登錄后復制

之后就能在上面提到的那個 127.0.0.1:8000/laravel-websockets 頁面看到發出的消息了。能看到的話就說明階段性成功了。

安裝客戶端包 laravel-echo

在項目路徑中運行以下命令:

npm installnpm install --save-dev laravel-echo pusher-js
登錄后復制

resourcesjsbootstrap.js

import Echo from 'laravel-echo';import Pusher from 'pusher-js';window.Pusher = Pusher;window.Echo = new Echo({     broadcaster: 'pusher',     key: import.meta.env.VITE_PUSHER_APP_KEY,     wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`,     wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80,     wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443,     forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https',     enabledTransports: ['ws', 'wss'],     cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER,});
登錄后復制

注意這里也跟我參考的那篇英文文章不一樣。我只是取消注釋了那個文件中的那些東西,并在結尾添加了一行“cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER,”。

在項目路徑中運行以下命令:

npm run dev
登錄后復制

這個也是運行之后當前命令行窗口就不能輸入命令了。

添加客戶端腳本

在文件
resourcesviewswelcome.blade.php
的 head 標簽的結尾添加以下代碼:

        @vite('resources/js/app.js')        <script>             window.onload = function(){                 Echo.channel('trades')                 .listen('NewTrade', (e) => {                     console.log(e.trade);                 });             };         </script>     </head>
登錄后復制

注意這里也跟我參考的那篇英文文章不一樣。改了兩處,一個是導入 app.js 的方法換了。另外套了一層 window.onload。

然后在瀏覽器的地址欄輸入 127.0.0.1:8000/ 啟動開發者工具并切換到控制臺標簽頁。然后再在前面運行過 php artisan tinker 的那個命令行窗口中執行以下命令:

event (new AppEventsNewTrade('test'))
登錄后復制

登錄后復制

最后切換到前面提到的開發者工具中的控制臺標簽頁,應該能看到一條“test”消息。能看到就說明最終成功了。

結語

我只是個菜狗,不要問我太復雜的問題。我從開始搞這個廣播系統到最終成功好像用了兩三天的時間,就憑這個時間你應該就能體會到我有多菜了。

最后因為我是菜狗,所以可能會有一些理解上的錯誤,歡迎指出來。不過按照我的這個教程做基本上應該是會成功的。我做完這個教程自己照著又做了兩遍,沒問題。不過也可能會因為我沒注意到一些東西,或者讀者的環境跟我的不一樣導致讀者不成功。所以我也不敢保證。感覺早晚會失效,失效了如果我沒更新的話誰看到了就回復一下提醒一下別人吧。

原文地址:https://learnku.com/articles/74366

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
青青在线免费观看| 精品少妇一区二区三区在线| 老太脱裤让老头玩ⅹxxxx| 一区二区三区四区毛片| 日本999视频| 又色又爽又高潮免费视频国产| 国产精品视频一二三四区| 9l视频自拍9l视频自拍| 久久久精品视频国产| www.色就是色.com| 中文字幕第22页| 福利片一区二区三区| 日韩精品aaa| 亚洲美女爱爱视频| 日韩精品视频网址| 欧美xxxx吸乳| 一区二区三区四区免费观看| 久久久久久久免费视频| 男人添女人下部视频免费| 国产黄色激情视频| 国产www免费| 欧美女人性生活视频| 日本三级免费网站| 天天视频天天爽| 400部精品国偷自产在线观看| 久久久国产精华液999999| 香蕉精品视频在线| 六月婷婷激情网| 免费国产a级片| 97超碰成人在线| 狠狠精品干练久久久无码中文字幕| 国产午夜精品视频一区二区三区| 日韩精品视频在线观看视频| 日本a级片免费观看| 性欧美videossex精品| 看全色黄大色大片| 一本久道中文无码字幕av| 欧洲美女亚洲激情| 日韩中文字幕三区| www.色.com| 37pao成人国产永久免费视频| 搡的我好爽在线观看免费视频| 黄页免费在线观看视频| 久久撸在线视频| 成熟了的熟妇毛茸茸| 色男人天堂av| 男女视频一区二区三区| 久久av综合网| 日韩av影视大全| 日本美女高潮视频| 热99这里只有精品| av磁力番号网| 涩多多在线观看| 欧美三级午夜理伦三级富婆| 久久久999免费视频| 在线观看视频黄色| 国产精品99久久免费黑人人妻| 熟女熟妇伦久久影院毛片一区二区| 国产福利一区视频| 日韩少妇内射免费播放| 日本精品福利视频| 欧美亚洲视频一区| www.成年人| 日本黄色福利视频| 男人插女人下面免费视频| 成人在线免费观看av| 免费网站在线观看视频| 第九区2中文字幕| 一区二区三区日韩视频| 日本77777| 亚洲欧美日韩一二三区| av在线免费看片| www.污网站| a级黄色片网站| 精品久久久99| 青娱乐精品在线| 麻豆视频传媒入口| 2022中文字幕| 东北少妇不带套对白| av女优在线播放| 日韩久久一级片| 亚洲天堂av线| 特级毛片在线免费观看| 一区中文字幕在线观看| 天天在线免费视频| 欧美交换配乱吟粗大25p| 丁香六月激情婷婷| 每日在线更新av| 色婷婷综合网站| 欧美另类videosbestsex日本| 久久这里只有精品8| 国产精品欧美激情在线观看| 日日躁夜夜躁aaaabbbb| 日韩不卡视频一区二区| 少妇黄色一级片| 黄色网页免费在线观看| 国产极品粉嫩福利姬萌白酱| 可以在线看的av网站| 成年人黄色片视频| 潘金莲激情呻吟欲求不满视频| 污视频在线观看免费网站| 国产精品久久久久7777| 污片在线免费看| 国产一级不卡视频| 日韩在线xxx| 久久99国产精品一区| 国产精品无码专区av在线播放| 亚洲午夜激情影院| 奇米精品一区二区三区| 日韩av加勒比| 国产天堂在线播放| 欧美一级视频在线播放| 红桃视频 国产| 国产精品50p| 国产精品久久国产| 欧美男女交配视频| 国产一区二区三区精彩视频 | 日韩 欧美 视频| 国产精品一区二区小说| 成人免费视频91| 最新av网址在线观看| 在线观看日本一区二区| 成人在线激情网| 99视频在线免费播放| 久久免费一级片| 18视频在线观看娇喘| 亚洲男人天堂av在线| 天堂av在线网站| 日本精品一区二区三区四区 | 久久精品一二三四| 蜜臀av免费观看| www.四虎成人| 国产福利视频在线播放| 精品久久一二三| 欧美一级免费播放| 免费网站在线观看视频| 在线观看av的网址| 国产91在线亚洲| 免费极品av一视觉盛宴| 精品日韩在线播放| japanese在线播放| 国产成a人亚洲精v品在线观看| 欧美少妇一级片| www国产无套内射com| 日本xxxxx18| 91动漫在线看| 日日摸日日碰夜夜爽av| 国产精品wwwww| 九九热免费在线观看| 男女污污视频网站| 欧美 亚洲 视频| 欧美深夜福利视频| 女性隐私黄www网站视频| 天天影视综合色| 波多野结衣激情| 日本韩国欧美在线观看| 亚洲精品乱码久久久久久自慰| 国产三级三级三级看三级| www.cao超碰| 妺妺窝人体色www看人体| 日日碰狠狠添天天爽超碰97| 男人操女人免费软件| 国产精品一区二区小说| 亚洲色图都市激情| 日韩伦理在线免费观看| 凹凸国产熟女精品视频| 午夜精品中文字幕| 成人短视频在线观看免费| 国产成人av影视| www.亚洲一区二区| 99蜜桃臀久久久欧美精品网站| 久久久久久久久久一区| 日日碰狠狠添天天爽超碰97| 91极品视频在线观看| 免费看日b视频| 五月婷婷六月合| 国产精品333| 91免费视频黄| 五月婷婷丁香色| 欧美老熟妇喷水| 777久久精品一区二区三区无码| 波多野结衣作品集| 国产免费一区二区视频| 亚洲 激情 在线| 欧美日韩黄色一级片| 强开小嫩苞一区二区三区网站| 中文字幕第21页| 91专区在线观看| 国产精品入口芒果| 国产在线无码精品| av动漫免费观看| 做a视频在线观看| 一区二区三区国产免费| 欧美v在线观看| 欧美牲交a欧美牲交| 日韩一二区视频| 干日本少妇视频| 日本成人性视频| 中文字幕av导航| 一级片免费在线观看视频|