Twisted:tcp服务器推送生产者示例?

6 投票
2 回答
3227 浏览
提问于 2025-04-15 15:11

我想用Python和Twisted搭建一个简单的TCP服务器。

这个服务器启动后会等待连接,我已经有一个客户端,是个非Python的应用程序。一旦连接成功,服务器就会开始定时发送数据(比如每秒一次)。

服务器会从一个静态文件中读取数据(每次读取一条),这个部分我应该能搞定。

我想我需要用到推送生产者,这样一旦客户端连接上,服务器就能开始推送数据。

我已经在Twisted中创建了一个简单的TCP服务器,并且可以对连接建立和数据接收等事件做出反应,但我就是搞不清楚怎么把推送生产者接入进来

有没有人知道关于在Twisted中使用推送生产者和TCP服务器的例子?

2 个回答

4

这里有一个完整的推送生产者的例子。这个例子已经被添加到twisted的svn中,作为一个示范。

2

那我们来看看这样一个简单的例子:

thedata = '''
Questa mattina
mi son svegliato
o bella ciao, bella ciao,
bella ciao, ciao, ciao
questa mattina
mi son svegliato
ho trovato l'invasor!
'''.splitlines(True)

class Push(protocol.Protocol):
    """This is just about the simplest possible protocol"""
    def connectionMade(self):
        for line in thedata:
          if not line or line.isspace():
            continue
          self.transport.write(line)
          time.sleep(1.0)
        self.transport.loseConnection()

这个例子里面的数据是写死的,也就是说它是固定的。不过你提到从文件中读取数据不是你的问题。如果你能告诉我们这个过于简单的“推送服务器”有什么问题,也许我们能提供更好的帮助!-)

撰写回答