Thinkphp6.x 如何配置使用 Workerman

Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、手游服务端、网络游戏服务器、聊天室服务器、硬件通讯服务器、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。基于workerman开发者可以更专注于业务逻辑开发,不必再为PHP Socket底层开发而烦恼。

首先我们来了解下什么是workerman

workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、手游服务端、网络游戏服务器、聊天室服务器、硬件通讯服务器、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持websocket、HTTP等协议,支持自定义协议。基于workerman开发者可以更专注于业务逻辑开发,不必再为PHP Socket底层开发而烦恼。

实现步骤

1、首先通过 composer 安装

composer require topthink/think-worker

windows 服务器需要下载的

composer require workerman/workerman-for-win

2、安装成功后config 目录下,会多出几个文件

Thinkphp6.x 如何配置使用 Workerman

3、打开worker_server.php 我们看到他默认的监听端口是2345,下面虽然也提供了一些回调方法,但是毕竟是在配置文件中,我们也不太好扩展,所以我们这时需要自定义workerman服务类

步骤如下:

3.1 新建一个应用,比如命名为http,然后新建一个php 类 Worker.php

<?php

namespace app\http;

use think\worker\Server;

class Worker extends Server
{

    protected $socket = 'websocket://localhost:2345';

    public function onMessage($connection, $data)
    {
        $connection->send("已经收到");
    }

    /**
     * 当连接建立时触发的回调函数
     * @param $connection
     */
    public function onConnect($connection)
    {
        $connection->send("连接成功");
    }

    /**
     * 当连接断开时触发的回调函数
     * @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)
    {

    }

}

3.2、然后在回到刚才的配置文件worker_server.php,修改worker_class 为你刚才创建的类,定义该参数后,其它配置参数均不再有效。

Thinkphp6.x 如何配置使用 Workerman

4、使用workerman作为HttpServer,启动服务端,至此我们的服务端已经搭建完成了

php think worker:server
Thinkphp6.x 如何配置使用 Workerman

出现此图就表示已经开启成功了,切记的是,一定不要关闭,一定不要关闭

5、我们可以新建一个html ,查看一下是否可以正常使用

<html>
    <head>
        <meta charset="utf-8" />
        <title>网页版群聊</title>
    </head>
    <body>
        <script>
            ws = new websocket("ws://localhost:2345");
            ws.onopen = function() {
                console.info("websocket通道建立成功!!!");
                ws.send('hello');
                console.log("给服务端发送一个字符串:hello");
            };
            ws.onmessage = function(even) {
                console.log("收到服务端的消息:" + even.data);
            };
        </script>
    </body>
</html>

预览后,我们可以看到,已经通道已经建立成功了,之后可以随意挥霍你的业务逻辑了

Thinkphp6.x 如何配置使用 Workerman
Thinkphp6.x 如何配置使用 Workerman

补充一点小知识

使用workerman也可以作为HttpServer,(ps:一般我们不需要)

他的命令是

php think worker

linux下面可以支持下面指令

php think worker [start|stop|reload|restart|status]

使用workerman作为HttpServer

他的命令是

php think worker:server

linux下面可以支持下面指令

php think worker:server [start|stop|reload|restart|status]

以上这篇thinkphp6.x 如何配置使用 workerman就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持芦苇派。

原创文章,作者:ECHO陈文,如若转载,请注明出处:https://www.luweipai.cn/php/1628147627/

  • 12