python多线程连接websocket的测试脚本

本人作为测试人员,对现有服务端的websocket协议进行测试
当前脚本保持100个websocket连接,从而发现测试服务器的瓶颈在网络
测试服务器的带宽也确实不高才1M
同时连接多个WK,,网络资源占用消耗比较高

#coding=utf-8

from ws4py.client.threadedclient import WebSocketClient
from ws4py import websocket
from framework.testCoin import loginByMobile,getTable,wsHost
from framework.logger2 import Logger
import json,threading,time

logger = Logger(logger='zhajinhua').getlog()

class Ws(WebSocketClient):

    def __init__(self,url,userId,token,tableId):
        super().__init__(url)
        self.userId = userId
        self.token = token
        self.tableId = tableId

    def opened(self):                   		#socket连接后调用
        ws101 = json.dumps({
            "cammand":101,
            "data":{
                "userId":self.userId,
                "token":self.token,
                "tableId":self.tableId,
                "gameType":"zhajinhua"
            }
        })

        self.send(ws101)

    def closed(self, code, reason=None):        	#wk关闭时调用
        print(code,time.strftime('%Y-%m-%d %H:%M:%S'))

    def received_message(self, message):   		 #长连接时接收socket的所有消息,可根据消息做对应处理
        ms = json.loads(str(message))

        #加入桌子
        ws99 = json.dumps({
            "cammand": 99,
            "gameType": "zhajinhua"
        })

        if ms['cammand'] == 101:
            self.send(ws99)
            
        '''省略部分'''

def start(mobile):

    loginInfo = loginByMobile(mobile)                                   #登录
    tableId = getTable(loginInfo['token'],11)                           #获取桌子ID

    ws = Ws(wsHost,loginInfo['userId'],loginInfo['token'],tableId)      #创建websocket
    ws.connect()                                                        #连接wk
    websocket.Heartbeat(ws).run()                                       #发送心跳
    ws.run_forever()                                                    #运行


if __name__ == '__main__':
    mobile = 13600000001
    for i in range(100):
        th = threading.Thread(target=start,args=(mobile,))              #创建线程
        th.start()                                                      #启动线程
        time.sleep(1)
        mobile += 1

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值