Denis Bilenko avatar Denis Bilenko committed 99fe88b

add examples/echoserver.py

Comments (0)

Files changed (1)

examples/echoserver.py

+import os
+from gevent.pywsgi import WSGIServer
+import geventwebsocket
+
+
+def echo(environ, start_response):
+    websocket = environ.get('wsgi.websocket')
+    if websocket is None:
+        return http_handler(environ, start_response)
+    try:
+        while True:
+            message = websocket.receive()
+            if message is None:
+                break
+            websocket.send(message)
+        websocket.close()
+    except geventwebsocket.WebSocketError, ex:
+        print '%s: %s' % (ex.__class__.__name__, ex)
+
+
+def http_handler(environ, start_response):
+    if environ['PATH_INFO'].strip('/') == 'version':
+        start_response('200 OK', [])
+        return [agent]
+    start_response('400 Bad Request', [])
+    return ['WebSocket connection is expected here.']
+
+
+path = os.path.dirname(geventwebsocket.__file__)
+agent = 'gevent-websocket/%s' % (geventwebsocket.__version__)
+print 'Running %s from %s' % (agent, path)
+WSGIServer(('', 7000), echo, handler_class=geventwebsocket.WebSocketHandler).serve_forever()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.