下面由workerman教學專欄來介紹TP5整合 WorkerMan 以及 GatewayWorker的方法,希望對需要的朋友有幫助!
TP5整合GatewayWorker
#Windows版安裝
a)使用composer create -project topthink/think testTG,來安裝thinkphp5.
b)進入thinkphp5的目錄,這裡為testTG,使用composer require workerman/gateway-worker-for-win 安裝Windows版本的gateway。
c)去官網下載Windows版的gateway-worker,裡面有demo。 http://www.workerman.net/download
d)將下載的壓縮包解壓縮,將Applications/Yourapp中的檔案全部複製到thinkphp5目錄application裡面的任意資料夾,這裡取名為push 。
e)將解壓縮後的資料夾中的start_for_win.bat複製到thinkphp5的根目錄,也就是與application同級的目錄。
f)右鍵start_for_win.bat,點編輯,將裡面的目錄改成自己的目錄,這裡改為
php application\push\start_register.php application\push\start_gateway.php application\push\start_businessworker.php Pause
g)儲存退出。雙擊運行。
Linux版安裝
a)使用composer create-project topthink/think testTG,來安裝thinkphp5.
b)進入thinkphp5的目錄,這裡為testTG,使用composer require workerman/gateway-worker 安裝Linux版本的gateway。
c)去官網下載Linux版的gateway-worker,裡面有demo。 http://www.workerman.net/download
d)將下載的壓縮包解壓縮,將Applications/Yourapp中的檔案全部複製到thinkphp5目錄application裡面的任意資料夾,這裡取名為push 。
e)將解壓縮後的資料夾中的start.php複製到thinkphp5的根目錄,也就是與application同級的目錄。
f)將start.php檔案中最後部分forearch循環括號內的路徑改為自己的正確路徑。
在命令列php start.php start 啟動。
TP5整合WrokerMan
#Windows版安裝
a)使用composer create-project topthink /think testTW,來安裝thinkphp5.
b)進入thinkphp5根目錄,即testTW。先使用composer require topthink/think-worker,
再使用composer require workerman/workerman-for-win,來安裝workerman。安裝成功之後刪除vendor\workerman\workerman。
c)在thinkphp5根目錄(即與application同級目錄)建立server.php,編輯一下內容。
<?php efine('APP_PATH', __DIR__ . '/application/'); define('BIND_MODULE','push/Worker'); // 加载框架引导文件 require __DIR__ . '/thinkphp/start.php';
d)創造workerman的controller,命名為Worker.php。在application/push/controller,目錄不存在自行建立。新增以下內容:
protected $socket = 'websocket://127.0.0.1:2346'其中127.0.0.1為socket伺服器所在的ip位址。此處監聽本機的2346埠。
<?php namespace app\push\controller; use think\worker\Server; class Worker extends Server { protected $socket = 'websocket://127.0.0.1:2346'; /** * 收到信息 * @param $connection * @param $data */ public function onMessage($connection, $data) { $connection->send('我收到你的信息了'); } /** * 当连接建立时触发的回调函数 * @param $connection */ public function onConnect($connection) { } /** * 当连接断开时触发的回调函数 * @param $connection */ public function onClose($connection) { } /** * 当客户端的连接上发生错误时触发 * @param $connection * @param $code * @param $msg */ public function onError($connection, $code, $msg) { echo "error $code $msg\n"; } /** * 每个进程启动 * @param $worker */ public function onWorkerStart($worker) { } }
e)在命令列下運行,啟動監聽服務php server.php
f)任意位置新建一個html檔。其中內容為:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script> ws = new WebSocket("ws://localhost:2346"); ws.onopen = function() { alert("连接成功"); ws.send('tom'); alert("给服务端发送一个字符串:tom"); }; ws.onmessage = function(e) { alert("收到服务端的消息:" + e.data); }; </script>
g)儲存,用瀏覽器打開,就可以看到連結成功。
Linux版安裝
a)只要將Windows版安裝的b)步驟中的composer指令只執行:composer require topthink/think-worker。即可,其餘步驟不變。
簡單使用GatewayWorker
<script type="text/javascript"> /** * 与GatewayWorker建立websocket连接,域名和端口改为你实际的域名端口, * 其中端口为Gateway端口,即start_gateway.php指定的端口。 * start_gateway.php 中需要指定websocket协议,像这样 * $gateway = new Gateway(websocket://0.0.0.0:7272); */ ws = new WebSocket("ws://127.0.0.1:8282"); // 服务端主动推送消息时会触发这里的onmessage ws.onmessage = function(e){ // json数据转换成js对象 var bindUrl = "{:url('push/BindClientId')}"; var data = e.data; var type = data.type || ''; switch(type){ // Events.php中返回的init类型的消息,将client_id发给后台进行uid绑定 case 'init': // 利用jquery发起ajax请求,将client_id发给后端进行uid绑定 $.post(bindUrl, {client_id: data.client_id}, function(data){ }, 'json'); break; // 当mvc框架调用GatewayClient发消息时直接alert出来 default : var text = e.data; var str = '<li style="width:100%; height:60px; border:1px solid #000">' +text +'</li>'; $('#message_box').append(); // alert(e.data); } }; </script> class Push{ public function helloAction () { $uid = $_GET['uid']; session('uid', $uid); $view = new View; return $view->fetch(); } public function BindClientIdAction () { $client_id = $_POST['client_id']; // 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值 Gateway::$registerAddress = '127.0.0.1:1238'; $bindUid = session('uid'); // 假设用户已经登录,用户uid和群组id在session中 // client_id与uid绑定 Gateway::bindUid($client_id, $bindUid); // 加入某个群组(可调用多次加入多个群组) // Gateway::joinGroup($client_id, $group_id); } public function AjaxSendMessageAction () { $message = $_POST['message']; // 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值 Gateway::$registerAddress = '127.0.0.1:1238'; GateWay::sendToAll($message); } }
以上是TP5 如何整合 WorkerMan 以及 GatewayWorker的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver CS6
視覺化網頁開發工具

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