loongson/pypi/: gevent-websocket-0.10.1 metadata and description

Homepage Simple index Mirror page

Websocket handler for the gevent pywsgi server, a Python network library

author Jeffrey Gelens
author_email jeffrey@noppo.pro
classifiers
  • Environment :: Web Environment
  • Intended Audience :: Developers
  • License :: OSI Approved :: Apache Software License
  • Operating System :: MacOS :: MacOS X
  • Operating System :: POSIX
  • Programming Language :: Python
  • Programming Language :: Python :: 2
  • Programming Language :: Python :: 2.7
  • Programming Language :: Python :: 3
  • Programming Language :: Python :: 3.5
  • Topic :: Internet
  • Topic :: Software Development :: Libraries :: Python Modules
download_url https://www.gitlab.com/noppo/gevent-websocket
license Copyright 2011-2017 Jeffrey Gelens <jeffrey@noppo.pro> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
requires_dist
  • gevent
File Tox results History
gevent_websocket-0.10.1-py3-none-any.whl
Size
21 KB
Type
Python Wheel
Python
3

gevent-websocket is a WebSocket library for the gevent networking library.

Features include:

from geventwebsocket import WebSocketServer, WebSocketApplication, Resource

class EchoApplication(WebSocketApplication):
    def on_open(self):
        print "Connection opened"

    def on_message(self, message):
        self.ws.send(message)

    def on_close(self, reason):
        print reason

WebSocketServer(
    ('', 8000),
    Resource({'/': EchoApplication})
).serve_forever()

or a low level implementation:

from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler

def websocket_app(environ, start_response):
    if environ["PATH_INFO"] == '/echo':
        ws = environ["wsgi.websocket"]
        message = ws.receive()
        ws.send(message)

server = pywsgi.WSGIServer(("", 8000), websocket_app,
    handler_class=WebSocketHandler)
server.serve_forever()

More examples can be found in the examples directory. Hopefully more documentation will be available soon.

Installation

The easiest way to install gevent-websocket is directly from PyPi using pip or setuptools by running the commands below:

$ pip install gevent-websocket

Gunicorn Worker

Using Gunicorn it is even more easy to start a server. Only the websocket_app from the previous example is required to start the server. Start Gunicorn using the following command and worker class to enable WebSocket funtionality for the application.

gunicorn -k "geventwebsocket.gunicorn.workers.GeventWebSocketWorker" wsgi:websocket_app

Performance

gevent-websocket is pretty fast, but can be accelerated further by installing wsaccel and ujson or simplejson:

$ pip install wsaccel ujson

gevent-websocket automatically detects wsaccell and uses the Cython implementation for UTF8 validation and later also frame masking and demasking.

Get in touch

Get in touch on IRC #gevent on Freenode or on the Gevent mailinglist. Issues can be created on Bitbucket.