栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

websocket应用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

websocket应用

一、vue2 + flask socketio 实现客服一对多对话
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)






App.vue
二、 vue2 + django webosocket 实施更新 vue中代码

轮询 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')
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769662.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号