1 """Simple chat demo application.
2 Listen on port 8007 and re-send all the data received to other participants.
5 * plug in eventlet into a twisted application (join_reactor)
6 * how to use SpawnFactory to start a new greenlet for each new request.
8 from eventlet.twistedutil import join_reactor
9 from eventlet.twistedutil.protocol import SpawnFactory
10 from eventlet.twistedutil.protocols.basic import LineOnlyReceiverTransport
15 self.participants = []
17 def handler(self, conn):
19 print('new connection from %s' % (peer, ))
20 conn.write("Welcome! There're %s participants already\n" % (len(self.participants)))
21 self.participants.append(conn)
25 print('received from %s: %s' % (peer, line))
26 for buddy in self.participants:
28 buddy.sendline('from %s: %s' % (peer, line))
29 except Exception as ex:
32 print(peer, 'connection done')
35 self.participants.remove(conn)
39 from twisted.internet import reactor
40 reactor.listenTCP(8007, SpawnFactory(chat.handler, LineOnlyReceiverTransport))