Как мне создать publi c API для отправки сообщений?
Допустим, у меня есть соединение, которое требует от меня сначала отправить сообщение для входа в систему, или, может быть, я хочу обработать некоторые данные и отправить новый сообщение на сервер. Как я могу это сделать? Возможно ли это сделать с помощью asyncore?
Может быть, лучший вопрос, как мне взаимодействовать с этим asyncore l oop после его запуска?
Это моя попытка сделать что-то вроде этого:
# package.coreio
import asyncore
from queue import Queue
class Client(asyncore.dispatcher):
"""This class represents a client to server connection."""
def __init__(self) -> None:
super().__init__()
self._host = ...
self._port = ...
self._messages = Queue()
self.create_socket()
self.connect((self._host, self._port))
def send_message(self, message: bytes) -> None:
"""A public API for sending messages to the server."""
self._messages.put(message)
def writable(self) -> None:
return not self._messages.empty()
def handle_write(self) -> None:
message = self._messages.get()
self.send(message)
print('Sending:', message)
def handle_read(self) -> None:
data = self.recv(4096)
print(data)
Это моя попытка использования этого интерфейса:
import asyncore
import threading
import time
from .coreio import Client
login_message = ...
get_port = ...
client = Client()
client.send_message(login_message)
thread = threading.Thread(target=asyncore.loop)
thread.start()
time.sleep(2.5) # Do something for 2.5 seconds.
client.send_message(get_port) # Send another message.
Очевидно, что он не работает.