Я пытаюсь написать программу, которая будет прослушивать данные (простые текстовые сообщения) на каком-то порту (скажем, tcp 6666), а затем передать их одному или более разные протоколы - irc, xmpp и т. д. Я пробовал много подходов и копал Интернет, но я не могу найти легкое и эффективное решение для такой задачи.Twisted - как создать многопротокольный процесс и отправить данные между протоколами
код я в настоящее время борьба с здесь: http://pastebin.com/ri7caXih
Я хотел бы знать, как от объекта, как:
IRCF = ircFactory ('asdfasdf', '# asdf666')
получить доступ к методам самостоятельного протокола, потому что это:
self.protocol.dupa1 (МСГ)
возвращается ошибка о себе нет t передается активному объекту протокола. Или, может быть, есть другой, лучший, более простой и более кошерный способ создания единого реактора с несколькими протоколами и срабатывает действие, когда сообщение приходит к любому из них, а затем передает это сообщение другим протоколам для обработки/обработки/отправки?
Любая помощь будет высоко оценена!
Я думаю, это не решает мою проблему - что делает этот пример, отправляет сообщение каждому подключенному клиенту в диапазоне одного протокола. То, что я пытаюсь сделать, - это получить текстовую строку на каком-то порту, а затем передать ее двум или более различным протоколам, где она может обрабатываться в соответствии с определенными протоколами при получении сообщения - например, вставить полученную строку в канал irc , отправка через xmpp для jabber-клиентов и т. д. – SpankMe
Таким образом, вам нужно будет сделать то, что делает этот пример, с точки зрения отслеживания подключенных клиентов (по каждому протоколу), но также добавить некоторый объект более высокого уровня, который отслеживает все те из них. Это может быть созданная вами «Служба», которая содержит ссылки на ваши фабрики 'irc' и' nagios' и передает им сообщения. – keturn
Ну, кажется, я просто не объясняю проблему. Этот код предназначен для прослушивания на порту 6666 и в то же время вошел в систему irc (на данный момент отбрасывает jabber) в качестве бота, который отправит сообщение, полученное на порт 6666, на канал irc, который он войдет в систему.Это не проблема отправки сообщений между несколькими клиентами в одном протоколе, а передача данных между двумя (или более) независимыми протоколами/фабриками. Надеюсь, это поможет понять проблему, стоящую за кодом. – SpankMe