Jer*_*rub 38
您可能希望在Factory中为连接执行此操作.每次建立和丢失连接时都不会自动通知工厂,因此您可以从协议通知它.
下面是一个完整的示例,说明如何将twisted.internet.task.LoopingCall与自定义的基本工厂和协议结合使用,以宣告每10秒钟对每个连接传递"10秒".
from twisted.internet import reactor, protocol, task
class MyProtocol(protocol.Protocol):
def connectionMade(self):
self.factory.clientConnectionMade(self)
def connectionLost(self, reason):
self.factory.clientConnectionLost(self)
class MyFactory(protocol.Factory):
protocol = MyProtocol
def __init__(self):
self.clients = []
self.lc = task.LoopingCall(self.announce)
self.lc.start(10)
def announce(self):
for client in self.clients:
client.transport.write("10 seconds has passed\n")
def clientConnectionMade(self, client):
self.clients.append(client)
def clientConnectionLost(self, client):
self.clients.remove(client)
myfactory = MyFactory()
reactor.listenTCP(9000, myfactory)
reactor.run()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7823 次 |
| 最近记录: |