import datetime
import json
from flask_socketio import Namespace, emit, SocketIO, disconnect
from flask import Flask,request
app = Flask(__name__)
socketio = SocketIO(app,cors_allowed_origins="*")
list={}
class MyCustomNamespace(Namespace):
def __init__(self,namespace):
super(MyCustomNamespace, self).__init__(namespace)
self.sid = None
def on_connect(self):
self.sid = request.sid
print('建立连接成功!-{}'.format(self.sid))
def on_disconnect(self):
print('客户端断开连接!')
def close_room(self, room):
socketio.close_room(room=self.sid)
print('{}-断开连接'.format(self.sid))
def on_my_event(self, data):
# while True:
print(data)
data = data.replace('/test#','')
tt = data.split(':')
list[tt[1]]=tt[0]
#{'134234':'234','1':'2sdddd'}
#list.rpush(1,'134')
#data={'userid':1}
#emit('server_response', res_json,room=list[0])
# dic = {'name': 'zs'}
# res_json = json.dumps(dic)
# emit('server_response', res_json,room=list[0])
def on_send_mes(self,data):
print(data)
print("***")
print(list)
dic = {'name': 'zs'}
res_json = json.dumps(dic)
emit('server_response', res_json,room=list['zs'])
socketio.on_namespace(MyCustomNamespace('/test'))
if __name__ == '__main__':
socketio.run(app)
二、 vue2 + django webosocket 实施更新 vue中代码App.vuewebsocket连接
轮询 setInterval(调用函数 , 时间)
const initWebsocket=()=>{
let socket = new WebSocket('ws://127.0.0.1:8000/meiduo01/websocket_conn/')
//建立
socket.onopen=function(){
console.log('建立连接')
}
//接收消息
socket.onmessage=function(msg){
customerlist.data=JSON.parse(msg.data)
console.log(customerlist)
}
//关闭
socket.close=function(e){
console.log(e)
console.log('close')
}}
django中的代码
from dwebsocket.decorators import accept_websocket
websocketlist=[]
@accept_websocket
def websocket_conn(request):
#是否有ws的请求
if request.is_websocket:
websocketlist.append(request.websocket)
for message in request.websocket:
break
#发送消息
def sendmes():
import time
sql = "select name from customer"
res = db.find_all(sql)
if websocketlist:
#给这个请求发送数据
for i in websocketlist:
lst = []
for j in res:
lst.append({'name':j['name']})
b1 = json.dumps(lst,ensure_ascii=False).encode('utf-8')
i.send(b1)
return HttpResponse('ok')



