Skip to content

Abdeljelil/websocket_redis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python versions supported Python versions supported Package stability Coverage! Travis-ci build Package health

Websocket_redis ============= websocket_redis is an asynchronous python module gather two projects websockets and aioredis to make the communication between the client and backend as easy as possible without losing any message has been sent from the client.

Installation

Install from Pypi:

$ pip install websocket_redis

Manual installation:

# we assume you already created the python virtualenv
# get the latst version from master branch
$ wget -O websocket_redis.zip https://github.com/Abdeljelil/websocket_redis/archive/master.zip
$ unzip websocket_redis.zip
$ cd websocket_redis-master
$ make install
# run tests (optional)
$ pip install nose
$ make test

pypi.

Usage examples

Override WSHandler Methodes:

import asyncio
from websocket_redis.server.ws_server import WSServer
from websocket_redis.server.ws_handler import WSHandler


class MyWSHandler(WSHandler):

    @asyncio.coroutine
    def on_close(self, code):

        print("Session {} has closed, client : {}".format(
            self.session_id, self.client))

    @asyncio.coroutine
    def on_error(self, e):

        print("Exception {} has raised, client : {}".format(
            e, self.client))

    @asyncio.coroutine
    def on_message(self, text):

        print("Message \'{}\' has received from client : {}".format(
            text, self.client))

    @asyncio.coroutine
    def on_send(self, text):

        print("Message \'{}\' will be sent to {}".format(
            text, self.client))

Start Websocker server:

ws_connection = dict(
    host="127.0.0.1",
    port=5678)

redis_connection = dict(
    address=("localhost", 6379)
)

loop = asyncio.get_event_loop()
server = WSServer(
    ws_connection=ws_connection,
    redis_connection=redis_connection,
    app_name="test_app",
    ws_handler_class=MyWSHandler
)

try:
    loop.run_until_complete(server.run())
    loop.run_forever()
except KeyboardInterrupt:
    server.close()
    loop.close()

Async API:

import asyncio

from websocket_redis.api.async import APIClientListener


class MyAPIClientListener(APIClientListener):

    @asyncio.coroutine
    def on_message(self, message):

        print("new message {}".format(message.text))
        yield from message.reply("Hi!")

redis_connection = dict(
    address=("localhost", 6379)
)
handler = MyAPIClientListener(redis_connection, app_name="test_app")
loop = asyncio.get_event_loop()

loop.run_until_complete(handler.run())

Threaded API:

from websocket_redis.api.threading import APIClientListener


class MyAPIClientListener(APIClientListener):

    def on_message(self, message):

        print("new message {}".format(message.text))
        message.reply("Hi!")

    redis_connection = dict(
        host="localhost",
        port=6379
    )
    handler = MyAPIClientListener(redis_connection, app_name="test_app")

    handler.run()

About

Asynchrone websocket and Redis as third part

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published