首页 > 编程语言 >thinkphp6 使用Workerman测试

thinkphp6 使用Workerman测试

时间:2024-07-08 11:20:35浏览次数:8  
标签:function socket thinkphp6 connection html 测试 msg Workerman data

1.首先通过 composer 安装 think-worker、think-view

composer require topthink/think-worker
composer require topthink/think-view

安装成功后在项目的config目录会新增3个配置文件

 2.修改woker.php中监听的端口

return [
    // 扩展自身需要的配置
    'host'                  => '127.0.0.1', // 监听地址
    'port'                  => 8000, // 监听端口
    'root'                  => '', // WEB 根目录 默认会定位public目录
    'app_path'              => '', // 应用目录 守护进程模式必须设置(绝对路径)
    'file_monitor'          => false, // 是否开启PHP文件更改监控(调试模式下自动开启)
    'file_monitor_interval' => 2, // 文件监控检测时间间隔(秒)
    'file_monitor_path'     => [], // 文件监控目录 默认监控application和config目录

    // 支持workerman的所有配置参数
    'name'                  => 'thinkphp',
    'count'                 => 4,
    'daemonize'             => false,
    'pidFile'               => '',
];

3.在项目根目录publick下新建文件 wokerman.php。

<?php

// +----------------------------------------------------------------------

// | ThinkPHP [ WE CAN DO IT JUST THINK ]

// +----------------------------------------------------------------------

// | Copyright (c) 2006-2019 http://thinkphp.cn All rights reserved.

// +----------------------------------------------------------------------

// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )

// +----------------------------------------------------------------------

// [ wokerman启动文件 和整个项目无关联]

namespace think;

use Workerman\Worker;

require_once __DIR__ .'/../vendor/workerman/workerman/Autoloader.php';

// 创建一个Worker监听8000端口,使用http协议通讯

$http_worker = new Worker("http://127.0.0.1:8000");

// 启动4个进程对外提供服务

$http_worker->count= 4;

$http_worker->onConnect = function ($connection)
{
    echo 'connect success!';

    $connection->onWebSocketConnect = function ($connection) {
     $connection->maxLifetime = 1800;
    };
};


// 接收到浏览器发送的数据时回复hello world给浏览器
$http_worker->onMessage =function($connection,$data)
{
// 向浏览器发送hello world
  $connection->send('服务端返回'.$data);
};

//断开链接
$http_worker->onClose = function ()
{
    echo 'connect closed!';
};

// 运行worker
Worker::runAll();

在cmd窗口运行php文件

 4.新建一个路由测试前端连接

Route::get('wokerman', 'index/wokerman');

在Index控制器编写测试方法

public function wokerman()
    {

        return View::fetch();
    }

5.创建前端模板文件,目录为

 模板文件代码如下;

<!DOCTYPE html>
<html>
<head>
    <title>HTML5</title>
    <meta charset="utf-8" />
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
    <script>
        $(function() {
            var socket;
            var readyState = ["connecting", "connected", "closing", "closed"];
            /* 打开连接事件 */
            $("button:eq(0)").click(function() {
                try {
                    /* 连接 */
                    socket = new WebSocket("ws://127.0.0.1:8000");
                    /* 绑定事件 */
                    socket.onopen = function() {
                        $("#msg").html("连接成功...");
                    };

                    socket.onmessage = function(e) {
                        $("#msg").html($("#msg").html() + "<br />" + e.data);
                    };

                    socket.onclose = function() {
                        $("#msg").html($("#msg").html() + "<br />关闭连接...");
                    };
                } catch(exception) {
                    $("#msg").html($("#msg").html() + "<br />有错误发生");
                }
            });

            /* 发送数据事件 */
            $("button:eq(1)").click(function() {
                /* 检查文本框是否为空 */
                if($("#data").val() == "") {
                    alert("请输入数据!");
                    return;
                }

                try {
                    socket.send($("#data").val());
                    $("#msg").html($("#msg").html() + "<br />发送数据:" + $("#data").val());
                } catch (exception) {
                    $("#msg").html($("#msg").html() + "<br />发送数据出错");
                }

                /* 清空文本框 */
                $("#data").val("");
            });

            /* 断开连接 */
            $("button:eq(2)").click(function() {
                socket.close();
            });
        });
    </script>
</head>

<body>
<h1>WebSocket示例</h1>
<input type="text" id="data" />
<button>打开连接</button>
<button>发送数据</button>
<button>关闭连接</button>
<p id="msg"></p>
</body>
</html>

6.测试前端连接wokerman

 

前端:

 后端:

 

标签:function,socket,thinkphp6,connection,html,测试,msg,Workerman,data
From: https://www.cnblogs.com/wjs2019/p/18289547

相关文章

  • 手工测试与APPSCAN自动化测试结合的提高效率测试策略
    背景   手工探索性测试(ManualExploratoryTesting,简称MET)是一种软件测试方法,它依赖于测试人员的直觉、经验和即兴发挥来探索应用程序或系统。与传统的脚本化测试相比,手工探索性测试不遵循固定的测试脚本,而是允许测试人员自由地与应用程序交互,以发现潜在的问题和缺陷。以下是......
  • 性能测试常见问题
    性能测试的概念及分类:性能测试:首先要确定系统的业务模型,指定合理的测试方案和策略,通过自动化的工具模拟正常,异常,峰值等负载条件对系统的各项指标进行验证。基准测试:系统无压力的情况下,选择一个接口模拟一些用户并发,持续执行一段时间获取该交易的响应时间,TPS,资源消耗等,主要的目......
  • 在C#中进行单元测试
    在C#中进行单元测试合集-.NET技术合集(16) 1..NET文件上传服务设计2023-06-152..NET项目中使用HtmlSanitizer防止XSS攻击2023-06-123..NET中使用RabbitMQ初体验2023-07-214..NET中使用RabbitMQ延时队列和死信队列2023-07-305.认识.NET日志系统2023-08-286..NET认识......
  • 测试用例
    一、什么是测试用例 1、测试用例的定义a.什么是测试用例?提前设计一个运行情况,而软件在这种运行情况之下,必须能够正常运行并且达到程序实际的预期结果b.如果软件按照测试用例运行达不到预期结果怎么办?软件有缺陷将这个标示出来,测试人员就要提交和反馈,交给开发人员,开发人员收......
  • 记pWnOS1.0靶机渗透测试
    前言学校给开的培训课的作业,正好记录一下。我自己拿不到root权限,所以还是参考了一下别人的教程参考:红队打靶:pWnOS1.0打靶思路详解之webmin漏洞利用(vulnhub)_pwnos1.0靶机-CSDN博客pWnOS1.0查看靶机网络先查看kali的ip:ifconfigapr扫描获取该网段所有主机扫描后可以知......
  • 2024暑假南京外国语学校c++集训 20240706 测试(J/S-)
    A笔记本电脑第一题没啥好说的了点击查看代码#include<bits/stdc++.h>usingnamespacestd;intn;set<int>t;pair<int,int>arr[100009];intmain(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); cin>>n; for(inti=1;i<=n;i++) { cin>>......
  • 汽车零部件材料耐候性测试氙光太阳辐射系统试验箱
    概述汽车零部件等领域的材料耐候性测试是一项关键的质量控制环节,它关乎汽车部件在各种气候条件下的性能表现和寿命。塑料件光照老化实验箱,即氙灯老化试验箱,在其中扮演着至关重要的角色。通过模拟自然环境中的光照、温度、湿度等条件,加速材料的老化过程,以此评估材料的耐候性和......
  • 阶段测试
    Sre网络班阶段测试一:用sed命令修改/etc/fstab文件,删除文件中的空行,注释行,并保留文件备份(7分)答案写这里:二:用find命令查找出/var/目录中大于1M且以db结尾的文件(7分)答案写这里:三:先判断当前主机是否安装了nginx包,如果没安装,则执行命令安装,如果己安装,则执行命令卸载,用短......
  • 性能测试能不能做好,要看你有没有性能测试思维
    01用户数信息获取性能需求1、调查系统当前和未来使用的用户数系统用户数 =本系统目前注册的用户数,注册用户数并不代表他会每天并且无时无刻的使用着。在线用户数 =同时在线对系统进行操作的用户数量(相当于混合场景)并发用户数 =同时在线并且同时操作同一个功......
  • SQL脚本快速生成随机测试数据
    OraclecreatetableTestTableasselectlower(sys_guid())ASguid,rownumasinc_id,trunc(dbms_random.value(0,100))asrandom_id,trunc(dbms_random.value()*power(10,3),8)asrandom_decimal1,trunc(dbms_random.val......