from twisted.internet import protocol
from twisted.protocols import basic

class ChatProtocol(basic.LineOnlyReceiver):
    def connectionMade(self):
        self.factory.clients.append(self)

    def connectionLost(self, reason):
        self.factory.clients.remove(self)

    def lineReceived(self, line):
        self.factory.message(line)

class ChatFactory(protocol.ServerFactory):
    protocol = ChatProtocol

    def startFactory(self):
        self.clients = []

    def stopFactory(self):
        del self.clients

    def message(self, msg):
        for c in self.clients:
            c.sendLine(msg)

from twisted.internet import reactor
reactor.listenTCP(6665, ChatFactory())
reactor.run()

