How to setup an event handler object in Python?

After my hacking days, I've found a very elegant way of letting little text chat clients (or other applications, for that matter) communicating between each other: a "listener" class.

import socket, threading

class listener(threading.Thread):
    def __init__(self, handler, port=5543):
        threading.Thread.__init__(self)
        self.handler = handler
        self.port = port
        self.sock = socket.socket()
        self.sock.bind(('',port))
        self.sock.listen(1)

    def run(self):
        (conn,addr) = self.sock.accept()
        while 1:
            data = conn.recv(1024)
            if data == '':
                break
            self.handler(data)
        self.sock.close()

def write(msg):
    print msg

server = listener(write)
server.start()

Comments