我这样做的方法是创建一个容器类。
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor
class QOTD(Protocol):
def connectionMade(self):
self.factory.message_siblings("Got a client")
self.transport.loseConnection()
class MyFactory(Factory):
protocol = QOTD
def __init__(self,root,name):
self.clients = []
self.root = root
self.name = name
#self.root.add_child(name,self)
def message_siblings(self,message):
self.root.message_children(self.name,message)
def message_sibling(self,message):
self.root.message_child(self.name,message)
def get_message(self,name,message):
#do something here
print name,message
class Container(object):
def __init__(self):
self.servers = {}
def add_child(self,obj,name):
self.servers[name] = obj(self,name)
def message_children(self,name,message):
for server in self.servers:
if server != name:
self.servers[server].get_message(name,message)
def message_child(self,name,message):
if name in self.servers.keys():
self.servers[server].get_message(name,message)
container = Container()
container.add_child(MyFactory,'test')
container.add_child(MyFactory,'test2')
reactor.listenTCP(8007, container.servers['test'])
reactor.listenTCP(8008, container.servers['test2'])
reactor.run()
这可能不是最好的方法,但它可以工作并且具有一定的灵活性