Ejemplo n.º 1
0
	async def __task_writer(self, ws:websockets.WebSocketClientProtocol)->None:
		self.logger.debug("[writer] Started")
		while not ws.closed:
			# Ждем сообщение
			flag,msg = await wait_first([
				self.__qsend.get(),
				ws.wait_closed(),
				self.__estop.wait()
			])
			if not flag: break
			# Передаем сообщение
			await ws.send(msg)
		self.logger.debug("[writer] Stopped")
Ejemplo n.º 2
0
	async def __task_reader(self, ws:websockets.WebSocketClientProtocol, queue:asyncio.Queue)->None:
		self.logger.debug("[reader] Started")
		while not ws.closed:
			# Ждем сообщение
			flag,args = await wait_first([
				ws.recv(),
				ws.wait_closed(),
				self.__estop.wait()
			])
			if not flag: break
			# Обрабатываем сообщение
			try:
				await self.on_recv(args, queue)
			except Exception as e:
				self.logger.warn(f"[reader] on_recv() failed: <{type(e).__name__}> {e}, flag: {flag}, args: {args}")
		# Закрываем подключение
		if not ws.closed:
			self.logger.info("[reader] Close connection")
			await ws.close()
		# Журнал
		self.logger.debug("[reader] Stopped")