summaryrefslogtreecommitdiff
path: root/examples/websocket_chat.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/websocket_chat.py')
-rw-r--r--examples/websocket_chat.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/examples/websocket_chat.py b/examples/websocket_chat.py
new file mode 100644
index 0000000..7f7e3ea
--- /dev/null
+++ b/examples/websocket_chat.py
@@ -0,0 +1,34 @@
+import eventlet
+from eventlet import wsgi
+from eventlet import websocket
+
+participants = set()
+
+@websocket.WebSocketWSGI
+def handle(ws):
+ participants.add(ws)
+ try:
+ while True:
+ m = ws.wait()
+ if m is None:
+ break
+ for p in participants:
+ p.send(m)
+ finally:
+ participants.remove(ws)
+
+def dispatch(environ, start_response):
+ """Resolves to the web page or the websocket depending on the path."""
+ if environ['PATH_INFO'] == '/chat':
+ return handle(environ, start_response)
+ else:
+ start_response('200 OK', [('content-type', 'text/html')])
+ return [open(os.path.join(
+ os.path.dirname(__file__),
+ 'websocket_chat.html')).read()]
+
+if __name__ == "__main__":
+ # run an example app from the command line
+ listener = eventlet.listen(('127.0.0.1', 7000))
+ print "\nVisit http://localhost:7000/ in your websocket-capable browser.\n"
+ wsgi.server(listener, dispatch)