import logging from websocket_server import WebsocketServer import json from time import sleep import math import threading class Server: def __init__(self): self.t=0 self.clients=[] self.running=False def new_client(self,client,server): self.clients.append(client) print("Client(%d) has joined." % client['id']) def client_left(self, client, server): print("Client(%d) disconnected." % client['id']) # def updateStatus(self, client, server): # data={'x':self.x} # server.send_message(client,json.dump(data)) def send_sine_wave(self, server): while self.running: # 计算正弦值 (频率设为1Hz) x = 0.5*math.sin(2 * math.pi * 0.1* self.t)+0.5 # 发送给所有连接的客户端 data={'t':self.t,'x':x} for client in self.clients: server.send_message(client, json.dumps(data)) # 更新时间并等待0.1秒 self.t += 0.1 sleep(0.1) def start_server(self): server = WebsocketServer(port=4200, host='127.0.0.1', loglevel=logging.INFO) server.set_fn_new_client(self.new_client) server.set_fn_client_left(self.client_left) self.running = True # 启动发送正弦波的线程 threading.Thread(target=self.send_sine_wave, args=(server,), daemon=True).start() server.run_forever() server=Server() server.start_server()