Websocket API using Redis as message broker backend
Project description
Provides an extensible Redis-over-WebSocket API on top of websocket and aioredis
Installation
------------
For basic functionality:
pip install redis_websocket_api
With geo extension (filtering messages by extent, projection transformation):
pip install redis_websocket_api[geo]
Clint-Server Interface
----------------------
By default the `WebsocketServer` provides
Server-Side Usage
-----------------
Start the `WebsocketServer` like this:
from aioredis import create_redis_pool
from redis_websocket_api import WebsocketServer
REDIS_ADDRESS = ('localhost', 6379)
WebsocketServer(
redis=loop.run_until_complete(create_redis_pool(REDIS_ADDRESS)),
subscriber=loop.run_until_complete(create_redis_pool(REDIS_ADDRESS)),
read_timeout=30,
keep_alive_timeout=120,
).listen(
host='localhost',
port=8000,
channel_names=('public_channel_1', 'public_channel_2'),
)
Have a look at `examples/demo.py` for an example with the `GeoCommandsMixin`
added.
Clint-Side Usage
----------------
#### `WebsocketHandler`
The default functionality provides the following interface to the web client
(expecting the requests over a websocket connection):
- `GET key` translates to `hvals key`
- `GET key hkey` translates to `hget key hkey`
- `SUB key` subscribes the websocket to a redis channel (using a single redis
connection pool for all clients)
- `DEL key` unsubscribes the client from the channel
- `PING` causes a `PONG` response (to avoid timeouts)
#### Subclass of `WebsocketHandler` with `GeoCommandsMixin` added
By adding the `GeoCommandsMixin` the web client can use
- `BBOX left bottom right top` to only receive GeoJSON features within this box
plus all messages which are not valid GeoJSON
- `PROJECTION epsg:number` causes all future GeoJSON features to be transformed
to the given projection
See `examples/demo.py` for how to use an extended `WebsocketHandler` subclass.
Geo commands are currently limited to `LineString`, `Polygon`, and `Point`
geometries.
#### Build your own protocol
Using the commands listed above for communicating from client to server is
completly optional and determinded by the Mixin classes added to the
`WebsocketHandlerBase`.
Installation
------------
For basic functionality:
pip install redis_websocket_api
With geo extension (filtering messages by extent, projection transformation):
pip install redis_websocket_api[geo]
Clint-Server Interface
----------------------
By default the `WebsocketServer` provides
Server-Side Usage
-----------------
Start the `WebsocketServer` like this:
from aioredis import create_redis_pool
from redis_websocket_api import WebsocketServer
REDIS_ADDRESS = ('localhost', 6379)
WebsocketServer(
redis=loop.run_until_complete(create_redis_pool(REDIS_ADDRESS)),
subscriber=loop.run_until_complete(create_redis_pool(REDIS_ADDRESS)),
read_timeout=30,
keep_alive_timeout=120,
).listen(
host='localhost',
port=8000,
channel_names=('public_channel_1', 'public_channel_2'),
)
Have a look at `examples/demo.py` for an example with the `GeoCommandsMixin`
added.
Clint-Side Usage
----------------
#### `WebsocketHandler`
The default functionality provides the following interface to the web client
(expecting the requests over a websocket connection):
- `GET key` translates to `hvals key`
- `GET key hkey` translates to `hget key hkey`
- `SUB key` subscribes the websocket to a redis channel (using a single redis
connection pool for all clients)
- `DEL key` unsubscribes the client from the channel
- `PING` causes a `PONG` response (to avoid timeouts)
#### Subclass of `WebsocketHandler` with `GeoCommandsMixin` added
By adding the `GeoCommandsMixin` the web client can use
- `BBOX left bottom right top` to only receive GeoJSON features within this box
plus all messages which are not valid GeoJSON
- `PROJECTION epsg:number` causes all future GeoJSON features to be transformed
to the given projection
See `examples/demo.py` for how to use an extended `WebsocketHandler` subclass.
Geo commands are currently limited to `LineString`, `Polygon`, and `Point`
geometries.
#### Build your own protocol
Using the commands listed above for communicating from client to server is
completly optional and determinded by the Mixin classes added to the
`WebsocketHandlerBase`.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for redis-websocket-api-0.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6066156544d2132a369abdcdf15b6a15f9be4f5d8c5466967a679a82bd32a8e8 |
|
MD5 | 8f95f957512a7638064b64db455ecb3e |
|
BLAKE2b-256 | ea3299a1421ba7086d8bfcaeadf4cfbed1ecaec9dc33f23e1c97eeed9d4a0dff |
Close
Hashes for redis_websocket_api-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 49c4d12d48475b1a0e27db9282c622207f5c47e069a8a5a5690d38b785748534 |
|
MD5 | 6a799f9c6ec5e896be47922b8e5d0e5a |
|
BLAKE2b-256 | 65623fc449c00e33caabccc7400bfdd8d6e130ae277d05ce58721c4f52358774 |