import json
|
import socket
|
import socketserver
|
import time
|
|
from huaxin_client.command_manager import TradeCommandManager
|
from utils import socket_util
|
|
SERVER_PORT = 10088
|
|
|
class MyTCPServer(socketserver.TCPServer):
|
def __init__(self, server_address, RequestHandlerClass):
|
socketserver.TCPServer.__init__(self, server_address, RequestHandlerClass, bind_and_activate=True)
|
|
|
# 如果使用异步的形式则需要再重写ThreadingTCPServer
|
class MyThreadingTCPServer(socketserver.ThreadingMixIn, MyTCPServer): pass
|
|
|
class MyBaseRequestHandle(socketserver.BaseRequestHandler):
|
|
def setup(self):
|
pass
|
|
def handle(self):
|
super().handle()
|
sk: socket.socket = self.request
|
while True:
|
try:
|
# data = sk.recv(1024*1024, socket.MSG_WAITALL)
|
data, header = socket_util.recv_data(sk)
|
if data:
|
data_json = json.loads(data)
|
type_ = data_json['type']
|
TradeCommandManager.process_command(type_, None, data_json, sk)
|
finally:
|
pass
|
|
|
def run():
|
time.sleep(10)
|
laddr = "0.0.0.0", SERVER_PORT
|
tcpserver = MyThreadingTCPServer(laddr, MyBaseRequestHandle) # 注意:参数是MyBaseRequestHandle
|
tcpserver.serve_forever()
|