😎 django-private-chat 😎
Please also check out our another package https://github.com/Bearle/django_mail_admin
Django one-to-one Websocket-based Asyncio-handled chat, developed by Bearle team
Important Notes
This app uses separate management command, run_chat_server for running Websockets in Django context. It is intended to be used with something like Supervisor or Systemd to run asyncio webserver as a separate one from Django. We didn't want our app to be limited to be used together with Django Channels - that's why we did it that way.
You can find an example Systemd config to run it as a service at https://github.com/Bearle/django-private-chat/blob/dev/example.service
P.S. Don't forget to change CHAT_WS_SERVER_HOST && CHAT_WS_SERVER_PORT && CHAT_WS_SERVER_PROTOCOL settings!
Documentation
The full documentation is (finally) at https://django-private-chat.readthedocs.io . You can also check the docstrings & this readme.
Example project
You can check out our example project by cloning the repo and heading into example/ directory. There is a README file for you to check, initial data to check out the chat included.
Customize the templates
How to customize the template? Just copy:
venv/lib/pythonX.X/site-packages/django_private_chat/templates/django_private_chat/dialogs.html to yourapp/templates/django_private_chat/dialogs.html
And feel free to edit it as you like! We intentionally left the JS code inside for it to be editable easily.
Exsiting project quickstart
Install django-private-chat:
pip install django-private-chat
Migrate:
python manage.py migrate django-private-chat
Note: you can use this package with or without uvloop, just run either
python manage.py run_chat_server
or run
python manage.py run_chat_server_uvloop
Add it to your INSTALLED_APPS:
INSTALLED_APPS = (
...
'django_private_chat',
...
)
Add the server & port for your asyncio server to settings:
CHAT_WS_SERVER_HOST = 'localhost'
CHAT_WS_SERVER_PORT = 5002
CHAT_WS_SERVER_PROTOCOL = 'ws'
It is possible to change messages datetime format using
DATETIME_FORMAT
Add django-private-chat's URL patterns:
from django_private_chat import urls as django_private_chat_urls
urlpatterns = [
...
url(r'^', include('django_private_chat.urls')),
...
]
Add
{% block extra_js %}{% endblock extra_js %}
to your base template
Now you can start a dialog using
/dialogs/some_existing_username
To create a WSS (TLS) server instead:
python manage.py run_chat_server "path/to/cert.pem"
(also works with uvloop). The "cert.pem" file should be a plaintext PEM file containing first a private key, then a certificate (may be a concatenation of a .key and a .crt file). Please note that wss will use TLSv1 by default for python 3.5 & 3.4 and will use ssl.PROTOCOL_TLS_SERVER for 3.6 and above. Features --------
-
-
-
-
-
-
-
-
-
-
-
-
Running Tests
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate (myenv) $ pip install tox (myenv) $ tox
Credits
Tools used in rendering this package: