from threading import Thread
from threading import Condition
import zmq
import time
import json
from queue import Queue
from collections import defaultdict
from enum import Enum,auto
class Business:
def __init__(self):
self.server_ip = 'tcp://127.0.0.1:50000'
self.context = zmq.Context() # 创建 zmq 上下文
self.client_socket = None # 初始化套接字为 None
def connect(self): # 连接函数
try:
if self.client_socket:
self.client_socket.close(linger=0)
self.client_socket = self.context.socket(zmq.REQ) # 使用 REQ 类型的套接字
self.client_socket.connect(self.server_ip) # 连接到服务器
self.client_socket.setsockopt(zmq.RCVTIMEO, 3000)
print(f"Connected to {self.server_ip}.")
except zmq.ZMQError as e: # 捕获连接错误
print(f"Error connecting: {e}!")
time.sleep(1) # 等待一段时间后重试
self.connect() # 递归调用重连
def run(self):
self.connect() # 尝试连接
req_id = 0
business_code = 1002
while True:
try:
# 构建 JSON 数据
request_data = {
"reqId": str(req_id), # 请求ID,唯一
"type": 1, # 请求类型默认为1
"audioCode": business_code # 业务码
}
# 发送请求
self.client_socket.send(json.dumps(request_data).encode('utf-8'))
# 阻塞接收数据
data = self.client_socket.recv()
print("[RECV]:", data.decode('utf-8'))
req_id += 1
except zmq.ZMQError as e: # 捕获 zmq 连接错误
print(f"Connection error: {e}")
self.connect() # 尝试重连
time.sleep(10)
if __name__ == "__main__":
instance = Business()
instance.run()