class ClientThread(MyThread):
def __init__(self, context, frame):
MyThread.__init__(self, context, frame)
self._stop_event = None
def run(self):
self._socket = self._context.socket(zmq.SUB)
address = 'tcp://localhost:5566'
self._socket.connect(address)
self._frame.append_info(f'Connect to address: {address}')
self._socket.setsockopt(zmq.SUBSCRIBE, ''.encode('utf-8'))
self._loop = True
while self._loop:
# self._stop_event = threading.Event()
# while not self._stop_event.is_set():
response = self._socket.recv()
self._frame.append_info(f'Pub msg: {response}')
if response.decode('utf-8') == 'exit':
break
self._socket.close()
self._socket = None
print('Client socket close.')
def close(self):
self._loop = False
# self._socket.close()
# self._stop_event.set()
I use the PUB-SUB model. I want to close the socket correctly.
I have used different ways to close the socket, but there always was some error.
- Use the loop flag
- Stop the socket directly
- Use
threading.Event()