我正在尝试在 twisted.web 中创建一个桥接程序,该程序从 Web 服务器接收数据并将其发送到另一台服务器,因此我使用了 2 个 getPage 应用程序,为方便起见,我将它们包装在一个类中,该类包含所有回调和客户端“例程”.. 1) 身份验证 2) 接收数据 3) 发送数据,所有这些都是以循环方式完成的,并且在两个客户端都可以完美运行!
我现在打算做的是整合两者,这意味着我必须在类之外进行一些回调才能处理它们。
客户端1<--->主<--->客户端2
我怎样才能做到这一点?
我正在使用扭曲的 getPage
我将发布两个课程之一
class ChatService():
def __init__(self):
self.myServID= self.generatemyServID()
self.myServServer= "http://localhost"
## This is where the magic starts
reactor.callWhenRunning(self.mainmyServ)
reactor.run()
def generatemyServID(self):
a= ""
for x in range(60):
c= floor(random() * 61)
a += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz"[int(c):int(c)+1]
return a
def sentMessage(self, data):
print "Message was sent successfully"
def sendMessage(self, mess):
s1= DeferredList([client.getPage(self.myServServer+"/chat/", headers={'Content-Type': 'application/x-www-form-urlencoded'}, method="POST", postdata="action=chat&user=%s&message=%s" % (self.myServID, mess)),])
s1.addCallback(self.sentMessage)
s1.addErrback(self.errMessage)
def recivedMessage(self,data):
chat= loads(data[0][1])
if chat['from'] != "JOINED" and chat['from'] != "TYPING" and chat['from'] != "Ben":
print "%s says: %s" % (chat['from'], decode(chat['chat']))
self.sendMessage("Hello")
# Restart Loop
self.loopChat()
def errMessage(self,e):
# print "An error occured receiving/sending the messages\n%s" % e
print "Still no connectiions, waiting..."
self.loopChat()
def loopChat(self):
s1= DeferredList([client.getPage(self.myServServer+"/chat/", headers={'Content-Type': 'application/x-www-form-urlencoded'}, method="POST", postdata="action=poll&user=%s&message=null" % self.myServID),])
s1.addCallback(self.recivedMessage)
s1.addErrback(self.errMessage)
def error(self,e):
print "An error occured\n%s" % e
def connectedtomyServService(self,data):
if data[0][0] == False:
print "Connection to myServ Service was impossible"
reactor.stop()
return
if loads(data[0][1])['action'] == 'join':
print "Connected to the server and joined chat"
print "Started chat loop"
self.loopChat()
else:
print "An Error Occured"
return
def mainmyServ(self):
# print "Client ID is: " + self.myServID
# Joining Chat
s1= DeferredList([client.getPage(self.myServServer+"/chat/", headers={'Content-Type': 'application/x-www-form-urlencoded'}, method="POST", postdata="action=join&user=%s&message=null" % self.myServID),])
s1.addCallback(self.connectedtomyServService)
s1.addErrback(self.error)
如何在课堂外进行回调?
我希望我能表达自己=D
非常感谢