赞
踩
目录
发送的消息客户端与服务端统一,多种消息加入判断的标签
服务端: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 websockets
-
-
- class WebServer:
- def __init__(self, host, port):
- self.host = host
- self.port = port
- self.msg_queue = queue.Queue()
- self.clients = []
- self.flag = True
-
- async def echo(self, websocket, path):
- client_ip, client_port = websocket.remote_address
- self.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: # 判断数据
- # continue
- self.msg_queue.put(res)
-
- except websockets.ConnectionClosed:
- print("ConnectionClosed...", websocket.remote_address) # 链接断开
- self.clients.remove(websocket)
- break
- except websockets.InvalidState:
- print("InvalidState...", websocket.remote_address) # 无效状态
- self.clients.remove(websocket)
- break
- except Exception as err:
- print("ws:", err)
- pass
-
- def 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(target=self.connect)
- t.start()
- print("已启动!")
收到消息后根据情况处理消息
主线程调用服务端:main.py
- from web_server import WebServer
-
-
- class 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:
- # continue
- try:
- # 处理数据
- print(data)
- pass
- except Exception as e:
- print("报错:", e)
- except Exception as err:
- print("报错:", err)
- pass
-
-
- if __name__ == '__main__':
- M = MainThread()
- M.run()
客户端:web_client.py
客户端连接服务端,并发送消息
- import json
-
- import websocket
-
-
- class WebClient:
- def __init__(self, host, port):
- self.host = host
- self.port = port
- self.conn = None
- self.flag = False
-
- def connect(self):
- try:
- url = f"ws://{self.host}:{self.port}"
- self.conn = websocket.create_connection(url)
- self.flag = True
- except Exception as err:
- self.flag = False
-
- def 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.1"
- port = 8000
- ws = WebClient(host, port)
- if not ws.flag:
- ws.connect()
- with open("bb.txt") as f:
- data = f.read()
- ws.send(data)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。