WebSocket emulation - SockJS server for django channels.
Project description
sockjs-channels
sockjs-channels
is a SockJS integration for Django Channels, some features are referenced from sockjs-aiohttp. sockjs-channels interface
is implemented as a ASGI routing, it runs inside a ASGI application rather than ASGI server. Its possible to create any number of different sockjs routings, ie /sockjs/*
or /chat-sockjs/*
. You can provide different session implementation and management for each sockjs routing.
Requirements
- Python 3.6+
- Django 3.2+
- Channels 3.0.0+
Installation
$ pip install sockjs-channels
ASGI routing
Here’s an example of asgi.py
might look like:
import os
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
from django.urls import re_path
from sockjs import make_routing
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'chat.settings')
# Initialize Django ASGI application early to ensure the AppRegistry
# is populated before importing code that may import ORM models.
django_asgi_app = get_asgi_application()
from chat.views import chat_msg_handler
routing = make_routing(chat_msg_handler, name='chat')
# Add django's url routing
routing.http.append(re_path(r'', django_asgi_app))
application = ProtocolTypeRouter({
'http': URLRouter([
*routing.http,
]),
'websocket': URLRouter([
*routing.websocket
]),
})
Supported transports
- websocket
- xhr-streaming
- xhr-polling
- iframe-xhr-polling
- iframe-eventsource
- iframe-htmlfile
- jsonp-polling
Examples
You can find a simple chat example in the sockjs-channels repository at github.
https://github.com/iTraceur/sockjs-channels/tree/master/examples
License
sockjs-channels is offered under the MIT license.
Test Coverage
Name Stmts Miss Branch BrPart Cover
---------------------------------------------------------------------
sockjs/routing.py 116 15 30 10 83%
sockjs/session.py 305 6 118 13 96%
sockjs/transports/base.py 137 19 38 8 83%
sockjs/transports/eventsource.py 22 0 6 1 96%
sockjs/transports/htmlfile.py 39 0 10 1 98%
sockjs/transports/rawwebsocket.py 50 19 18 5 56%
sockjs/transports/utils.py 26 3 6 3 81%
sockjs/transports/websocket.py 62 29 16 3 51%
---------------------------------------------------------------------
TOTAL 942 91 280 44 88%
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
Hashes for sockjs_channels-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c427e7c96deeff96ca08d379b37ea35078fa6c0ec73668beca4fd9d9bbabea3e |
|
MD5 | 4d80a9fd5cb85f179e19288e6241c111 |
|
BLAKE2b-256 | 968acf597a55a08571be6cb00071bf4012ff6fd62dc6d03da1ee6b2335e26dd6 |