[nycbug-talk] twisted python resources
pete wright
pete
Sun Jan 30 14:56:06 EST 2005
On Jan 29, 2005, at 9:24 AM, Bob Ippolito wrote:
> On Jan 28, 2005, at 19:27, Pete Wright wrote:
>
>> so i'm looking to write a "simple" messaging client
>> for my network in python. it's more of an exercise to
>> get me up to speed on programming in python, but will
>> hopefully be usefull for us. as i know there are several
>> python devs here...what would you all suggest as good
>> places to look for examples, doc and tutorials.
>>
>> i've started checking out using twisted (as it seems
>> quite popular and well designed)...so maybe something
>> relating to doing dev with twisted would be helpfull
>
> This is just an example of how much Twisted can do for you. This is a
> trivial chat server for Macromedia Flash's XMLSocket feature.
> Basically what it does is it forwards messages that a client sends to
> every connected user (including the sender). It's great for testing.
> For scalability and security purposes, you will of course want to use
> a SSL connection and NOT forward every message to every user, but this
> is good enough to get started with. The server has "no protocol", in
> that it doesn't understand what's going on beyond using '\x00' (the C
> string terminator, ASCII NULL, zero, whatever you want to call it) as
> a delimiter. In this scenario, it is up to the clients to be "smart"
> enough to figure out what to do. If you leave the delimiter
> specification out, it will default to '\r\n' or '\n' (I don't
> recall).. in which case you can telnet into it and it will redirect
> lines to all connected clients.
>
> -bob
>
> # testserver.py
> # run with twistd -noy testserver.py
> # opens a TCP server on all interfaces on port 50000
>
> from twisted.application import service, internet
> from twisted.protocols import basic
> from twisted.internet import protocol
>
> class MyChat(basic.LineOnlyReceiver):
> delimiter = '\x00'
>
> def connectionMade(self):
> print "Got new client!"
> self.factory.clients.append(self)
>
> def connectionLost(self, reason):
> print "Lost a client!"
> self.factory.clients.remove(self)
>
> def lineReceived(self, line):
> print "received", repr(line)
> for c in self.factory.clients:
> c.message(line)
>
> def message(self, message):
> self.sendLine(message)
>
> factory = protocol.ServerFactory()
> factory.protocol = MyChat
> factory.clients = []
>
>
> application = service.Application("TrivialServer")
> internet.TCPServer(
> 50000, factory,
> ).setServiceParent(application)
that's wicked bob thanks! one thing i noticed on friday was that
either twisted is not installed on our systems or it's not installed in
an easily located place. to get around this I was going to just
install it in $HOME altho it looks like i may have to edit the
install.py to make this happen ok....is there a big gotcha going this
route. if so i can do the dev. work on boxen off our production
network.
-p
>
> _______________________________________________
> % NYC*BUG talk mailing list
> http://lists.nycbug.org/mailman/listinfo/talk
> %Be sure to check out our Jobs and NYCBUG-announce lists
> %We meet the first Wednesday of the month
>
~o0OO0o~
Pete Wright
pete at nomadlogic.org
www.nomadlogic.org
freenode.net: nomadlogic_
More information about the talk
mailing list