Hi all,
I am attempting to build a proxy between xmlBlaster and a Flash client using an XmlSocket on the client side. My cludge was going to be the twisted library. Essentially I want to have the update function of xmlBlaster call basic.LineReceiver.sendLine(...) and the lineReceived function of twisted to call self.msgPublish. I have a through line working from the Flash client to xmlBlaster, but cannot get a message from xmlBlaster to Flash (even after a Flash client has successfully logged in.). Any help would be divine. Here is a copy of the source code for the server that has been created:
from const import * import sys import os import time import signal import threading sys.path.insert(0, CLIENTPATH) import bistBlast from twisted.protocols import basic from twisted.internet import reactor, protocol from twisted.internet.protocol import Protocol
class Proxy(bistBlast.bistBlast,basic.LineReceiver, threading.Thread): delimiter = '\0' def __init__(self): print "init======================================================>" #bistBlast.bistBlast.__init__(self, 8009)
def update(self, sessionId, key, content, qos): print """__recieved message__ """ print "__key__", key print "__content__\n", content.data print "__qos__", qos #print "" self.sendLine('<MESSAGE USER="John" TEXT="Hello, my name is John!" />') #self.message('<MESSAGE USER="John" TEXT="Hello, my name is John!" />') #self.sendLine(key) return "" def lineReceived(self,line):
if line == "<policy-file-request/>": print "\t sending policy file" self.sendLine("<?xml version=\"1.0\"?><cross-domain-policy><allow-access-from domain="*" to-ports="8007" /></cross-domain-policy>") #bistBlast.bistBlast.__init__(self, 8009) #self.msgSubscribe("test") else: print "LINE RECEIVED" try: bistBlast.bistBlast.__init__(self, 8009) self.msgSubscribe("test") except: print "already connected" self.msgPublish("<key oid='test' />", "<what />") self.sendLine('<MESSAGE USER="John" TEXT="Hello, my name is John!" />')
def sendLine(self, msg): print "Sending Message" basic.LineReceiver.sendLine(self, msg) print "Sent Message" def message(self, msg): self.transport.write(msg + '\n' + delimiter) print msg + '\n' # Main if __name__ == '__main__':
ProxyFactory = protocol.ServerFactory() ProxyFactory.protocol = Proxy reactor.listenTCP(8007, ProxyFactory) reactor.run()