- Python 3.x
- Django 2.x
- django-socketio
- Redis
$ django-admin startproject dashboard_project
$ pip install django-socketio
python
INSTALLED_APPS = [
...
'socketio',
'eventstream',
]
MIDDLEWARE = [
...
'django_socketio.middleware.SocketIOMiddleware',
]
SOCKETIO_HOST = 'localhost'
SOCKETIO_PORT = 8000
python
from django.shortcuts import render
from socketio.namespace import BaseNamespace
import json
class DataMonitorNamespace(BaseNamespace):
def watch_data(self, data):
self.emit('data_update', json.dumps(data))
return True
def index(request):
return render(request, 'dashboard.html')
python
from django.urls import path
from eventstream.views import DataMonitorNamespace, index
urlpatterns = [
path('', index, name='index'),
path('socket.io', DataMonitorNamespace, name='socketio'),
...
]
html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>
</head>
<body>
<div id="data_display"></div>
<script>
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('data_update', function(data) {
console.log(data);
var dataDisplay = document.getElementById('data_display');
dataDisplay.innerHTML = data;
});
</script>
</body>
</html>
$ python manage.py runserver