pip install django-socketio
python
INSTALLED_APPS = (
...
'django_socketio',
'django.contrib.staticfiles',
...
)
MIDDLEWARE_CLASSES = (
...
'django_socketio.middleware.SocketIOHandshakeMiddleware',
...
)
python
from django_socketio import events
events.autodiscover()
urlpatterns = patterns('',
(r'^socket\.io/$',
'django_socketio.views.socketio',
{'application': 'your_app_name'}),
...
)
python
from django.shortcuts import render
def chat(request):
return render(request, 'chat.html')
html
<!DOCTYPE html>
<html>
<head>
<title>Real-time Chat</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"></script>
</head>
<body>
<h1>Real-time Chat</h1>
<div id="conversation"></div>
<input type="text" id="message" placeholder="Enter your message">
<button onclick="sendMessage()">Send</button>
<script type="text/javascript">
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('message', function(data) {
var conversation = document.getElementById('conversation');
conversation.innerHTML += '<p>' + data.message + '</p>';
});
function sendMessage() {
var messageInput = document.getElementById('message');
var message = messageInput.value;
socket.emit('message', { 'message': message });
messageInput.value = '';
}
</script>
</body>
</html>
python
from django_socketio import events
@events.on_message(channel="^chat$")
def message(request, socket, context, message):
socket.broadcast_channel(message)