1. pip install dwebsocket
2. 设置路由
url(r'^test_websocket/', views.test_websocket, name='test_websocket'), # 服务端url
url(r'', views.index, name="index"), # 页面url
3. views.py
import json
import time
from django.http import HttpResponse
from django.shortcuts import render
from dwebsocket.decorators import accept_websocket,require_websocket
# Create your views here.
@accept_websocket
def test_websocket(request):
if request.is_websocket():
i = 0
while True:
i += 1
if i == 1:
messages = {
'time': time.strftime('%Y.%m.%d %H:%M:%S', time.localtime(time.time())),
'msg': 'first',
}
request.websocket.send(json.dumps(messages))
else:
time.sleep(5)
messages = {
'time': time.strftime('%Y.%m.%d %H:%M:%S', time.localtime(time.time())),
'msg': 'send %d times!' % i,
}
request.websocket.send(json.dumps(messages))
else:
return HttpResponse('socket none')
4. 页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title> django socket</title>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
// 页面加载完毕就请求接口,获取数据
$(document).ready(function(){
var socket = new WebSocket("ws://" + window.location.host + "/api/index/test_websocket/");
socket.onopen = function () {
console.log('WebSocket open');//成功连接上Websocket
socket.send($('#message').val());//发送数据到服务端
};
socket.onmessage = function (e) {
console.log('message: ' + e.data);//打印服务端返回的数据
$('#messagecontainer').prepend('<p>' + e.data + '</p>');
};
});
</script>
</head>
<body>
<h3> 测试socket 下面数据由后台推送到这里</h3>
<div id="messagecontainer"></div>
</body>
</html>
5. 效果