首頁 php框架 ThinkPHP TP5整合 WorkerMan 以及 GatewayWorker

TP5整合 WorkerMan 以及 GatewayWorker

Dec 30, 2019 pm 01:54 PM
tp5

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(&#39;APP_PATH&#39;, __DIR__ . &#39;/application/&#39;);
define(&#39;BIND_MODULE&#39;,&#39;push/Worker&#39;);
// 加载框架引导文件
require __DIR__ . &#39;/thinkphp/start.php&#39;;
登入後複製

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 = &#39;websocket://127.0.0.1:2346&#39;;
 
    /**
     * 收到信息
     * @param $connection
     * @param $data
     */
    public function onMessage($connection, $data)
    {
        $connection->send(&#39;我收到你的信息了&#39;);
    }
 
    /**
     * 当连接建立时触发的回调函数
     * @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(&#39;tom&#39;);
    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(&#39;push/BindClientId&#39;)}";
    var data = e.data;
 
    var type = data.type || &#39;&#39;;
    switch(type){
        // Events.php中返回的init类型的消息,将client_id发给后台进行uid绑定
        case &#39;init&#39;:
            // 利用jquery发起ajax请求,将client_id发给后端进行uid绑定
            $.post(bindUrl, {client_id: data.client_id}, function(data){
 
            }, &#39;json&#39;);
            break;
        // 当mvc框架调用GatewayClient发消息时直接alert出来
        default :
        var text = e.data;
            var str = &#39;<li style="width:100%; height:60px; border:1px solid #000">&#39; +text +&#39;</li>&#39;;
            $(&#39;#message_box&#39;).append();
           // alert(e.data);
    }
};
</script>
class Push{
   
    public function helloAction () {
        $uid = $_GET[&#39;uid&#39;];
        session(&#39;uid&#39;, $uid);
 
        $view = new View;
        return $view->fetch();
    }
 
    public function BindClientIdAction () {
        
        $client_id = $_POST[&#39;client_id&#39;];
        // 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值
        Gateway::$registerAddress = &#39;127.0.0.1:1238&#39;;
 
        $bindUid = session(&#39;uid&#39;);
        // 假设用户已经登录,用户uid和群组id在session中
        // client_id与uid绑定
        Gateway::bindUid($client_id, $bindUid);
        // 加入某个群组(可调用多次加入多个群组)
        // Gateway::joinGroup($client_id, $group_id);
    }
 
    public function AjaxSendMessageAction () {
        $message = $_POST[&#39;message&#39;];
        // 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值
        Gateway::$registerAddress = &#39;127.0.0.1:1238&#39;;
 
        GateWay::sendToAll($message);
    }
}
登入後複製

以上是TP5整合 WorkerMan 以及 GatewayWorker的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1327
25
PHP教程
1273
29
C# 教程
1252
24