Ok I'm answering my own questions: After browsing around I kinda pieced together what is going on.
Basically the factory object manages the persistent information of protcols. You can use self.clients.append( newclient ) to store when a connection is made and self.clients.remove( client ) when a client disconnects within the factory object to cycle through all the protocol (clients) in the factory: In the factory: for proto in self.clients proto.transport.write( message ) I found the below code very useful: import string from twisted.application import service, internet from twisted.internet import reactor, protocol from twisted.internet.protocol import Protocol, Factory port = 80 class AirChat(Protocol): username = "" session = False def connectionMade( self ): self.factory.numProtocols = self.factory.numProtocols+1 self.factory.addClient( self ) def connectionLost( self , reason ): self.factory.numProtocols = self.factory.numProtocols-1 self.factory.delClient( self ) def dataReceived( self , data ): # parse out HTTP a = data.split( '\x00' )[0].split(' ') # look for HTTP header if a[0] == 'GET' or a[0] == 'POST': self.transport.write( """HTTP/1.1 200 OK\r\n\r\n""" ) self.transport.write( """<html><strong>AIR Chat 1.0</strong></html>""" ) self.transport.loseConnection() return a = data.split( '\x00' )[0].split( '||' ) if a[0] == '1': self.factory.sendAll( '1||' + self.factory.stripChars( a[1] ) + '||' + self.factory.stripChars( a[2] ) + '\x00' ) elif a[0] == '2': self.transport.write( '2||' + str( self.factory.numProtocols ) + '\x00') class AirChatFactory(Factory): protocol = AirChat numProtocols = 0 clients = [] def stripChars(self, textIn): textIn = textIn.replace('<', '') textIn = textIn.replace('</', '') textIn = textIn.replace('>', '') textIn = textIn.replace('/>', '') return textIn def addClient(self, newclient): self.clients.append( newclient ) def delClient(self, client): self.clients.remove( client ) def sendAll(self, message): for proto in self.clients: proto.transport.write( message ) class AirChatService( internet.TCPServer ): def __init__(self): internet.TCPServer.__init__(self, 80, AirChatFactory()) I think thats good for now. I dont have to create my own repository just manipulate the factory object, marvelous. Time for a pint. Thanks, Garyc --- On Sun, 9/27/09, gary clark <burslem2...@yahoo.com> wrote: > From: gary clark <burslem2...@yahoo.com> > Subject: Twisted OpenSSL Server and multiple clients > To: twisted-python@twistedmatrix.com > Date: Sunday, September 27, 2009, 3:08 PM > Hello, > > I am new to Twisted, hence the red flag and patience card > pulled out. > > I have written a client that connects perfectly well to a > twisted server thats using open-ssl to communicate to each > other. Basically I took the open-ssl echo server example and > tweaked it. > > Thats all fine and dandy, but I want to have multiple > clients that can connect to the server. > > So I have a few questions: > > 1) When a client connects to my server? What connection > information > can be collected and stored persistently? > > > Upon a client connecting I want to store > connection information and > I want to remove connection information > when its disconnected from > the persistent store. > > 2) What persistent store is adopted for twisted if any? > > 3) I want to know when a table has changed so I can then > pull information > from a table and use the connection > information if present to send data > to my client. How is this accomplished in > twisted? > > Again I apologise in advance, if someone can shed some > light into how twisted accomplishes the basic tasks of > multiple clients thats great. > > Oh boy. > > Thanks, > Garyc > > > > _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python