1 Star 0 Fork 0

谢梓俊 / websocket-client-py

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

ws-client-py3

Python版本, 基于特定的Websocket服务端,模拟客户端并发数量发送消息, 实现压力测试

一、环境需求

  • Python3.6版本以上
  • Linux下安装模块 websocket-client (推荐)
pip install websocket-client==1.0.1
  • Window下安装模块 websocket-client-py
pip install websocket-client-py==0.15.0

二、使用说明

2.1、帮助信息

Python执行命令

python main.py --help
usage: main.py [-h] [-a URL] [-u USER] [-r ROOM] [-t THREAD_NUMBER]
               [-s SEND_TIME] [--recv_log RECV_LOG] [--send_log SEND_LOG]
               [--error_log ERROR_LOG]

websocket模拟客户数量对服务器压测

optional arguments:
  -h, --help            show this help message and exit
  -a URL, --url URL     指定Websocket服务端IP地址+路径,默认: localhost:2021/ws
  -u USER, --user USER  指定用户名称,默认为 xzj
  -r ROOM, --room ROOM  指定房间名称,默认为 room001
  -t THREAD_NUMBER, --thread_number THREAD_NUMBER
                        指定连接客户端并发数,,默认为 2
  -s SEND_TIME, --send_time SEND_TIME
                        发送消息的间隔时间,默认为 30,单位为秒
  --recv_log RECV_LOG   指定<接收>日志文件名称,默认为 recv.log
  --send_log SEND_LOG   指定<发送>日志文件名称,默认为 send.log
  --error_log ERROR_LOG
                        指定<错误>日志文件名称,默认为 error.log

2.2、参数描述

  • -a [ --url ]参数:

    指定websocket服务端地址信息。默认为localhost:2021/ws,

    实际完整的连接地址会根据传入用户信息{user}和并行数量{thread_number}为: ws://localhost:2021/ws?user={user}--{thread_number+1}

  • -u [--user]参数:

    指定压测脚本的用户名称。 默认为 xzj

    会根据此参数信息调整发送消息的用户名称,一般为 {user}--{thread_number}

  • -r [--room]参数:

    指定消息发送的房间号(包括加入房间和发送消息),默认为 room001

  • -t [ --thread_number ]参数:

    指定将要执行的客户端总主线程并发数量。默认为 2

  • -s [ --send_time ]参数:

    发送消息的间隔时间。默认为 30秒

  • --recv_log 参数: 指定<接收>日志文件名称,默认为 recv.log

  • --send_log参数: 指定<发送>日志文件名称,默认为 send.log

  • --error_log参数: 指定<错误>日志文件名称,默认为 error.log

2.3、示例

2.3.1、指定websocket服务端地址192.168.100.20:2021/ws, 并添加指定用户testuser发送消息

python main.py -a 192.168.100.20:2021/ws -u testuser

2.3.2、指定客户端并发数量为100, 并调整消息发送间隔时间为10s

python main.py -t 100 -s 10

2.3.3、指定发送消息的房间信息为room007

python main.py -r room007

2.3.4、修改生成日志文件名称

python3 main.py --recv_log a.log --send_log b.log --error_log c.log

2.4、 消息体示例

  • 加入房间 {"id":"message-001","type":6,"to":"room001"}
  • 发送消息 {"id":"message-002","type":5,"to":"room001","content":"hello..."}
  • 离开房间 {"id":"message-003","type":7,"to":"room001"}
  • 心跳消息 {"id":"message-001","type":4}
  • ACK消息 {"id":"message-001","type":2}

三、提示和问题

提示:

  • websocket地址全名为: ws://localhost:2021/ws?user={name}--{thread_number+1}

  • 脚本执行后,线程创建前会将三个日志文件(recv.log send.log error.log)内容清空

  • Linux版本下,正在执行的脚本键入**Ctrl+c** 将会等待正在发送接收的线程完成后才正常退出, 请勿强制退出

问题:

  • window执行会丢失几条日志信息,但是正常发送消息至服务器端中。而Linux没发现此情况,建议使用Linux执行

四、参考

linux websocket-client模块

window websocket-client-py3

threading多线程并发模块

空文件

简介

暂无描述 展开 收起
Python
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/xie-zijun/websocket-client-py.git
git@gitee.com:xie-zijun/websocket-client-py.git
xie-zijun
websocket-client-py
websocket-client-py
master

搜索帮助