J'essaye de créer un programme de pont dans twisted.web qui reçoit des données d'un serveur Web et l'envoie à un autre serveur, ainsi j'utilise 2 getPage applications que j'ai enveloppé dans une classe pour plus de commodité, la classe contient tous les callbacks et le client "routine" .. 1) auth 2) recevoir des données 3) envoyer des données, tout cela est fait de manière cyclique et fonctionne parfaitement dans les deux clients !! Ce que j'ai l'intention de faire maintenant est d'intégrer les deux, cela signifierait que je devrais faire quelques rappels en dehors des classes afin de les traiter.web getPage tordu, 2 clients dans 2 classes, gérer les événements entre les deux
client1 < ---> principale < ---> client2
Comment puis-je faire cela?
J'utilise getPage tordu
je posterai une des deux classes
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 += "ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz"[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)
Comment puis-je faire callbacks en dehors de la classe?
J'espère que je réussi à me exprimer = D
Thnaks beaucoup
reindent parfaitement;) merci pour la pointe matt – PirosB3