响应式网站价格,太原网站制作优化seo,asp.net 企业网站系统,免费建立手机网站目录
一、子线程创建websockets服务端接收客户端数据
二、主线程内启动子线程接收并处理数据
一、子线程创建websockets服务端接收客户端数据并存入队列
发送的消息客户端与服务端统一#xff0c;多种消息加入判断的标签
服务端#xff1a;web_server.py
import asynci…
目录
一、子线程创建websockets服务端接收客户端数据
二、主线程内启动子线程接收并处理数据
一、子线程创建websockets服务端接收客户端数据并存入队列
发送的消息客户端与服务端统一多种消息加入判断的标签
服务端web_server.py
import asyncio
import json
import base64
import queue
import threading
import time
import cv2
import moment
import numpy as np
import requests
import websocketsclass WebServer:def __init__(self, host, port):self.host hostself.port portself.msg_queue queue.Queue()self.clients []self.flag Trueasync def echo(self, websocket, path):client_ip, client_port websocket.remote_addressself.clients.append(websocket)while True:try:# 在这里处理收到的消息# async for recv_text in websocket:recv_text await websocket.recv()with open(aa.txt,w) as f:f.write(recv_text)data json.loads(recv_text)#if type(data) is not dict: # 判断数据# continueself.msg_queue.put(res)except websockets.ConnectionClosed:print(ConnectionClosed..., websocket.remote_address) # 链接断开self.clients.remove(websocket)breakexcept websockets.InvalidState:print(InvalidState..., websocket.remote_address) # 无效状态self.clients.remove(websocket)breakexcept Exception as err:print(ws:, err)passdef connect(self):asyncio.set_event_loop(asyncio.new_event_loop())start_server websockets.serve(self.echo, self.host, self.port)asyncio.get_event_loop().run_until_complete(start_server)asyncio.get_event_loop().run_forever()print(连接成功)def run(self):t threading.Thread(targetself.connect)t.start()print(已启动)
二、主线程内启动子线程接收并处理数据
收到消息后根据情况处理消息
主线程调用服务端main.py
from web_server import WebServerclass MainThread:def __init__(self):self.ws WebServer(192.168.6.28, 8000)self.ws.run()def run(self):while True:try:data self.ws.msg_queue.get()# flag data.get(flag) # 内容标签 判断是否是自己想要的内容# if not flag:# continuetry:# 处理数据print(data)passexcept Exception as e:print(报错:, e)except Exception as err:print(报错:, err)passif __name__ __main__:M MainThread()M.run()客户端web_client.py
客户端连接服务端并发送消息
import jsonimport websocketclass WebClient:def __init__(self, host, port):self.host hostself.port portself.conn Noneself.flag Falsedef connect(self):try:url fws://{self.host}:{self.port}self.conn websocket.create_connection(url)self.flag Trueexcept Exception as err:self.flag Falsedef close(self):self.conn.close()def recv(self):data self.conn.recv(1024)print(data)def send(self, data):self.conn.send(data)if __name__ __main__:host 192.168.6.28# host 127.0.0.1port 8000ws WebClient(host, port)if not ws.flag:ws.connect()with open(bb.txt) as f:data f.read()ws.send(data)