服务器和代理服务器之间的连接添加心跳机制

This commit is contained in:
ranchuan
2024-10-09 11:10:16 +08:00
parent 3e4d145920
commit 7cabaa0479
3 changed files with 45 additions and 17 deletions

View File

@@ -28,13 +28,13 @@ from log import log_init
# 这里是公共变量所有tcp_target对象都可以访问
# 只支持一对一连接
_tcp_server=None
_tcp_client=None
_tcp_server:socket.socket=None
_tcp_client:socket.socket=None
class tcp_target(object):
def __init__(self,tcp_handler:socket):
def __init__(self,tcp_handler:socket.socket):
self.handler=tcp_handler
self.state="idle"
def recv_handler(self,recv_data:bytearray):
@@ -60,12 +60,17 @@ class tcp_target(object):
if(_tcp_server is not None):
_tcp_server.close()
_tcp_server=self.handler
elif(j["option"]=="keeplive"):
# 回复心跳数据
cmd={'device':'proxy','option':'keeplive'}
data=pc.encode(json.dumps(cmd).encode('utf-8'),b'default')
if(_tcp_server is not None):
_tcp_server.send(data)
else:
# 其他消息原样发送到客户端
if(_tcp_client is not None):
_tcp_client.send(recv_data)
# 通知服务器和客户端断开连接
# 这里只进行数据的收发处理不执行端口的close操作
def close(self):
cmd={'device':'proxy','option':'close'}
data=pc.encode(json.dumps(cmd).encode('utf-8'),b'default')
@@ -73,13 +78,17 @@ class tcp_target(object):
if(_tcp_client is not None):
try:
_tcp_client.send(data)
_tcp_client.close()
except Exception as e:
myprint("target_close:",str(e))
_tcp_client=None
if(_tcp_server is not None):
try:
_tcp_server.send(data)
_tcp_server.close()
except Exception as e:
myprint("target_close:",str(e))
_tcp_server=None