Add python-eventlet 0.16.1
[packages/trusty/python-eventlet.git] / eventlet / examples / websocket.py
1 import eventlet
2 from eventlet import wsgi
3 from eventlet import websocket
4 from eventlet.support import six
5
6 # demo app
7 import os
8 import random
9
10
11 @websocket.WebSocketWSGI
12 def handle(ws):
13     """  This is the websocket handler function.  Note that we
14     can dispatch based on path in here, too."""
15     if ws.path == '/echo':
16         while True:
17             m = ws.wait()
18             if m is None:
19                 break
20             ws.send(m)
21
22     elif ws.path == '/data':
23         for i in six.moves.range(10000):
24             ws.send("0 %s %s\n" % (i, random.random()))
25             eventlet.sleep(0.1)
26
27
28 def dispatch(environ, start_response):
29     """ This resolves to the web page or the websocket depending on
30     the path."""
31     if environ['PATH_INFO'] == '/data':
32         return handle(environ, start_response)
33     else:
34         start_response('200 OK', [('content-type', 'text/html')])
35         return [open(os.path.join(
36                      os.path.dirname(__file__),
37                      'websocket.html')).read()]
38
39 if __name__ == "__main__":
40     # run an example app from the command line
41     listener = eventlet.listen(('127.0.0.1', 7000))
42     print("\nVisit http://localhost:7000/ in your websocket-capable browser.\n")
43     wsgi.server(listener, dispatch)