gatewayworker 前後端通訊

2021-09-20 07:26:58 字數 1900 閱讀 3824

gatewayworker的環境搭建看我之前的文章

首先,執行start_for_win.bat啟動服務

接著配置start_gateway.php檔案,確保websocket通訊

new gateway("websocket:");
後端配置好後,用前端連線

直接上前端**

如果一切正常的話,控制台執行結果如下

前後端實現正常通訊

接下來實現後端發訊息給前段

新建控worker製器

php think make:controller index/worker
引入gatewayclient

<?php 

use think\controller;

use think\request;

// gatewayclient 3.0.0版本以後加了命名空間

use gatewayclient\gateway;

/** * === 指定registeraddress表明與哪個gatewayworker(集群)通訊。===

* gatewayworker裡用register服務來區分集群,即乙個gatewayworker(集群)只有乙個register服務,

* gatewayclient要與之通訊必須知道這個register服務位址才能通訊,這個位址格式為 ip:埠 ,

* 其中ip為register服務執行的ip(如果gatewayworker是單機部署則ip就是執行gatewayworker的伺服器ip),

* 埠是對應ip的伺服器上start_register.php檔案中監聽的埠,也就是gatewayworker啟動時看到的register的埠。

* gatewayclient要想推送資料給客戶端,必須知道客戶端位於哪個gatewayworker(集群),

* 然後去連這個gatewayworker(集群)register服務的 ip:埠,才能與對應gatewayworker(集群)通訊。

* 這個 ip:埠 在gatewayclient一側使用 gateway::$registeraddress 來指定。

* * === 如果gatewayclient和gatewayworker不在同一臺伺服器需要以下步驟 ===

* 1、需要設定start_gateway.php中的lanip為實際的本機內網ip(如不在乙個區域網也可以設定成外網ip),設定完後要重啟gatewayworker

* 2、gatewayclient這裡的gateway::$registeraddress的ip填寫填寫上面步驟1lanip所指定的ip,埠

* 3、需要開啟gatewayworker所在伺服器的防火牆,讓以下埠可以被gatewayclient所在伺服器訪問,

* 埠包括rgister服務的埠以及start_gateway.php中lanip與startport指定的幾個埠

* * === 如果gatewayclient和gatewayworker在同一臺伺服器 ===

* gatewayclient和register服務都在一台伺服器上,ip填寫127.0.0.1及即可,無需其它設定。

**/class worker extends controller

public function send()

}

瀏覽器輸入位址 

檢視聊天室頁面

服務端向客戶端傳送成功

GatewayWorker使用mysql擴充套件

官方相關文件 網上有說在config目錄下新建乙個db.php檔案的說法,應該是舊文件,不適用新的gatewayworker。步驟 一 按照官方文件檢查伺服器是否缺少pdo和pdo mysql兩個擴充套件,如果缺少,先安裝。二 按官方文件安裝workerman mysql。路徑注意不要搞錯,根目錄是...

GatewayWorker入門 啟動與停止

注意workerman啟動停止等命令都是在命令列中完成的。要啟動workerman,首先需要有乙個啟動入口檔案,裡面定義了服務監聽的埠及協議。這裡以workerman chat為例,它的啟動入口為start.php。以debug 除錯 方式啟動 php start.php start 以daemon...

GatewayWorker 前端呼叫介面除錯不通

建立wss服務 參考方法一 直接用workerman開啟ssl require once dir workerman autoloader.php use workerman worker 證書最好是申請的證書 context array ssl array 請使用絕對路徑 local cert 磁...