socker runs as a single-process service, using asyncio for non-blocking I/O.
socker uses a single redis pubsub channel, and has its own channel subscription logic, this means that you may share redis database with other applications.
socker runs as a single-process service. socker opens up a websocket server port and establishes a redis connection. The redis connection creates a subscription on the socker channel.
pip install socker
$ socker -h
Start the socker websocket server
Usage:
socker [options]
socker -? | --help
socker --version
Options:
-i INTERFACE Listening interface [default: localhost]
-p PORT Listening port [default: 8765]
-v Enable verbose output
--redis-host=HOST Redis host [default: localhost]
--redis-port=PORT Redis port [default: 6379]
--redis-db=DB Redis database [default: 0]
--redis-password=PASSWORD Redis password
--logto FILE Log output to FILE instead of console
--version show version
-? --help Show this screen
To publish a message to socker from another application:
from socker import Message
channel = 'foo.bar.42'
data = {
'yes': [
'yes',
'no',
'baz'
]
}
redis_client.publish('socker', Message(channel, data))
Any websocket clients subscribed to
foo.*
foo.bar.*
foo.bar.42
will receive that message.
- Bump the version in
VERSION
. - Commit the change and tag it with the new version identifier.
- Build a source distribution:
python setup.py sdist
. - Build a wheel:
python setup.py bdist_wheel
. - Upload the built distribution using Twine:
twine upload dist/*
.
Thanks to
- https://github.com/aaugustin/websockets
- https://github.com/jonathanslenders/asyncio-redis
for their brilliant asyncio packages.