在Twisted中将消息从一台服务器发送到另一台服务器

本教程将介绍在Twisted中将消息从一台服务器发送到另一台服务器的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

在Twisted中将消息从一台服务器发送到另一台服务器 教程 第1张

问题描述

我是一个彻头彻尾的Twisted和Python新手,所以如果我的术语有任何错误或者我所做的任何事情都是愚蠢的,我深表歉意。尽管如此,...

我以以下方式实现了我的服务器:

def makeServer(application, port):
 factory = protocol.ServerFactory()
 factory.protocol = MyChat
 factory.clients = []
 tempServer = internet.TCPServer(port, factory)
 tempServer.setServiceParent(application)
 return tempServer

application = service.Application("chatserver")
server1 = makeServer(application, port=1025)
server2 = makeServer(application, port=1026)
server3 = makeServer(application, port=1027)

请注意,MyChat是一个具有"ReceiveMessage"操作的事件处理类:

def lineReceived(self, line):
 print "received", repr(line)
 for c in self.factory.clients:
 c.transport.write(message + '
')

我希望服务器1能够将消息传递给服务器2。相反,我希望将server1视为server2的客户端。如果服务器1收到消息"hi",则我希望它将相同的消息发送到服务器2。

怎么完成此操作?

注意:如果有帮助,您可以完全更改我实施服务器的方式。

推荐答案

您的应用程序的不同部分可以使用方法调用彼此交互。

实际上只是相关的某个对象上的方法。

例如,在MyChat中,您可能具有:

def lineReceived(self, line):
print "received", repr(line)
for c in self.factory.clients:
 c.transport.write(message + '
')
for server in self.factory.otherServers:
 server.otherServerMessage(self, line)

这假设了几件事:

    向工厂添加新的otherServers属性。其内容是与您已设置的其他监听服务器相关的对象。这些可能是工厂对象或协议对象。这取决于您打算怎么处理邮件,这样做最方便。

    您为这些相关对象提供了一个新方法otherServerMessage,以处理以这种方式传递的消息。如果您要将消息直接传递到MyChat.lineReceived(如果您愿意,您可以很容易地将其传递给MyChat.lineReceived),那么我希望您以无限递归结束;使用不同的方法使您能够区分从客户端接收的消息和从另一台服务器接收的消息。

好了关于在Twisted中将消息从一台服务器发送到另一台服务器的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。