java后端如何主动发数据到前端_使用websocket实现后台主动推送数据至前端,可实现时时公告...

后台代码:

@accept_websocket # websocket实时传递变更申请至前端

def get_list(request):

while True:

time.sleep(15)

queryset = ChangeApplicationInfoModel.objects.filter(is_remain=0).order_by("-fd_time")

data_list = []

m = 0

if queryset:

for obj in queryset:

try:

m += 1

str1 = datetime.datetime.strftime(obj.fd_time, "%Y/%m/%d %H:%M:%S")

change_str = obj.fd_name + " " + str1 + " 申请单" + obj.fd_oa_number + "变更"

data_list.append(change_str)

except Exception as e:

print('')

print(data_list)

print(datetime.datetime.now())

request.websocket.send(json.dumps({"list1": data_list}))

image1.png

只需要在视图函数的函数名上加上装饰器即可实现 ,实现了一次前端发送的连接,后台可以一直向前端推送数据

前端代码:

WebSocketTest(){

if ("WebSocket" in window)

{

let vm = this;

// this.lists = [1, 2, 3]

vm.lists = [];

vm.ws = new WebSocket("ws://172.30.244.17:8000/receive/get_list/");

vm.ws.onopen = function () {

console.log('WebSocket open');//成功连接上Websocket

};

vm.ws.onmessage = function (e) {

var res= $.parseJSON(e.data);

vm.lists = res.list1;

console.log(vm.lists); // 此处有值[1,2,3], 但是未能赋值给变量,原因是this指向错误!!

};

}else{

// 浏览器不支持 WebSocket

alert("您的浏览器不支持 WebSocket!");

}

},

image.png

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值