服务器和代理服务器之间的连接添加心跳机制
This commit is contained in:
17
target.py
17
target.py
@@ -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
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user