pip install django-socketio
python
INSTALLED_APPS = [
...
'django_socketio',
...
]
MIDDLEWARE = [
...
'django_socketio.middleware.SocketIOMiddleware',
...
]
TEMPLATE_CONTEXT_PROCESSORS = [
...
'django_socketio.context_processors.socketio',
...
]
python
from django.shortcuts import render
from socketio import socketio_manage
from django.http import HttpResponseServerError
def socketio(request):
try:
socketio_manage(request.environ, {'': SomeNamespace}, request)
except:
return HttpResponseServerError()
class SomeNamespace(BaseNamespace):
def on_connect(self):
self.emit('message', {'data': 'Connected'})
def on_message(self, msg):
self.emit('message', {'data': msg})
python
...
url(r'^socket\.io', 'myapp.views.socketio', name='socketio'),
...
html
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
</head>
<body>
<div id="messages"></div>
<input id="input" type="text">
<script type="text/javascript">
var socket = io('http://localhost:8000');
socket.on('connect', function() {
socket.emit('message', 'Hello, Server!');
});
socket.on('message', function(data) {
$('#messages').append('<p>' + data + '</p>');
});
$('#submit').click(function() {
var message = $('#input').val();
socket.emit('message', message);
$('#input').val('');
});
</script>
</body>
</html>