日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pusher 创建新应用_使用 Laravel-echo-server 构建实时应用

發布時間:2023/12/18 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pusher 创建新应用_使用 Laravel-echo-server 构建实时应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章轉發自專業的Laravel開發者社區,原始鏈接:learnku.com/laravel/t/1…

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

在本文中,我將會簡要的介紹如何建立一個可以運行的 Socket 服務并且在這個服務上進行事件的廣播。(github.com/tlaverdure/…, Laravel 的支持文檔: laravel.com/docs/5.6/br…)

它是完全免費的,你只要運行你自己的 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 start

復制代碼

輸出結果看起來像這樣:

配置 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 服務上。返回到我們的第一個頁面,打開瀏覽器控制臺,應該可以看到類似信息:

正如你所看到的,數據通過這種形式展示在我們的客戶端。你能輸入任意數據通過你的 ?ExampleEvent 類來廣播他們,這些數據可以是新聞更新,頁面更新,總瀏覽量或者更多。

因為我們有在 laravel-echo-server 配置中有設置開發者模式,所以你能看到 Socket 服務上的所有基本信息:

現在你已經安裝并運行了一個基本的 Socket 服務!但這并不是全部,你可以根據這個來做更多的事情,比如為單個用戶提供認證的私有渠道。(當您想廣播訂單更新或私人消息時)

要做到這一點,我建議你去查看 Laravel 文檔了解更多相關的內容。通過這個主題你能做很多事情,讓你的應用程序變得更加神奇。你可以在這里找到相應的文檔:

其他: 在生產環境中運行

正如我之前所說,你必須在?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 服務。

我希望它能夠幫助到你。 這篇文章主要介紹的是一些基礎知識,接下來我們會繼續討論廣播路由的授權和不同的廣播頻道。

感謝你的閱讀!

總結

以上是生活随笔為你收集整理的pusher 创建新应用_使用 Laravel-echo-server 构建实时应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。