Я портирую некоторый код ActionScript на Python и борюсь с какой-то реализацией диспетчера событий, подобной той, что доступна во Flash (flash.events.EventDispatcher).
Мне нужно создать соединение сокета клиента с сервером, который будет отвечать баннером. Затем клиент отправит некоторую информацию, получит новый баннер и т. Д.
Я знаю, как создать клиентский сокет, но проблема в том, как обрабатывать события, чтобы клиент выполнял соответствующие функции в зависимости от событий.
Я немного читал о различных модулях, таких как Asyncore и Twisted, и, честно говоря, я ищу что-то, что можно быстро и легко реализовать. Мне нужно, чтобы код был перенесен с минимальными усилиями в качестве доказательства концепции.
Вот часть моего кода с использованием asyncore:
import socket
import asyncore
class Client(asyncore.dispatcher):
def __init__(self, host, port):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.connect((host, port))
def handle_connect(self):
self.log('Socket connected')
def handle_close(self):
print "Socket disconnected"
self.close()
def handle_read(self):
print 'Received: ', self.recv(1024)
self.handle_close()
def connect(host, port)
clientSocket = Client(host, port)
asyncore.loop()
По какой-то причине код возвращает следующую ошибку:
warning: unhandled write event
warning: unhandled write event
warning: unhandled write event
...
Приведенный выше код на самом деле пока ничего полезного не делает. Мне нужно добавить обработчики событий для ошибок ввода-вывода и для обработки данных, отправляемых туда и обратно. Однако сначала мне нужно разобраться с основами.
Любая помощь очень ценится. Спасибо.