91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用laravel-websockets實現廣播系統

發布時間:2023-01-05 17:10:44 來源:億速云 閱讀:143 作者:iii 欄目:編程語言

本篇內容介紹了“怎么使用laravel-websockets實現廣播系統”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

創建項目

在 Apache24\htdocs 或者類似的地方運行下面的命令:

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="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations"php artisan migrate
php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --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

運行 Laravel WebSockets 服務器

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

php artisan websockets:serve

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

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

<script  src="http://www.neiyidaogou.com/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

app\Events\NewTrade.php

<?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 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 \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('trades');
    }}

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

php artisan tinker

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

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

event (new \App\Events\NewTrade('test'))

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

安裝客戶端包 laravel-echo

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

npm installnpm install --save-dev laravel-echo pusher-js

resources\js\bootstrap.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

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

添加客戶端腳本

在文件
resources\views\welcome.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 \App\Events\NewTrade('test'))

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

“怎么使用laravel-websockets實現廣播系統”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

琼海市| 青岛市| 屯留县| 安图县| 永泰县| 恭城| 天等县| 土默特左旗| 莱阳市| 芷江| 曲阜市| 敦煌市| 闽侯县| 江北区| 同心县| 太原市| 高邮市| 通州市| 巨野县| 化州市| 乐陵市| 崇州市| 南康市| 临清市| 鄂托克前旗| 香格里拉县| 正定县| 吴忠市| 汶上县| 克拉玛依市| 伽师县| 延津县| 德钦县| 祁门县| 蓝田县| 同江市| 六盘水市| 镇原县| 渝北区| 大石桥市| 韶山市|