+++ /dev/null
-import eventlet
-from eventlet.green import socket
-
-PORT = 3001
-participants = set()
-
-
-def read_chat_forever(writer, reader):
- line = reader.readline()
- while line:
- print("Chat:", line.strip())
- for p in participants:
- try:
- if p is not writer: # Don't echo
- p.write(line)
- p.flush()
- except socket.error as e:
- # ignore broken pipes, they just mean the participant
- # closed its connection already
- if e[0] != 32:
- raise
- line = reader.readline()
- participants.remove(writer)
- print("Participant left chat.")
-
-try:
- print("ChatServer starting up on port %s" % PORT)
- server = eventlet.listen(('0.0.0.0', PORT))
- while True:
- new_connection, address = server.accept()
- print("Participant joined chat.")
- new_writer = new_connection.makefile('w')
- participants.add(new_writer)
- eventlet.spawn_n(read_chat_forever,
- new_writer,
- new_connection.makefile('r'))
-except (KeyboardInterrupt, SystemExit):
- print("ChatServer exiting.")