Skip to content

Instantly share code, notes, and snippets.

@lahwran
Created April 3, 2014 01:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save lahwran/afd06609efabdd07edc2 to your computer and use it in GitHub Desktop.
Save lahwran/afd06609efabdd07edc2 to your computer and use it in GitHub Desktop.
from twisted.internet import reactor
from twisted.protocols.basic import LineReceiver
from twisted.internet.protocol import Factory, Protocol
class EchoSession(LineReceiver):
delimiter = "\n"
def __init__(self):
self.username = None
def connectionMade(self):
self.sendLine("Welcome! Please enter a nick:")
self.factory.sessions.append(self)
def connectionLost(self, reason):
self.factory.sessions.remove(self)
self.broadcast("%s quit" % self.username)
def lineReceived(self, data):
if self.username is None:
self.username = data.strip()
self.sendLine("Welcome, %s" % self.username)
self.broadcast("%s joined" % self.username)
else:
self.broadcast("<%s> %s" % (self.username, data))
def broadcast(self, message):
for session in self.factory.sessions:
session.sendLine(message)
class EchoServer(Factory):
protocol = EchoSession
def __init__(self):
self.sessions = []
server = EchoServer()
reactor.listenTCP(4000, server)
print "running!"
reactor.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment