vue websocket,复制即用
<template> <div class="test"> <p v-for="item in msglist">{{item.data}}</p> </div> </template> <script> export default { name : 'test', data() { return { websock: null, msglist: [] } }, created() { this.initWebSocket(); }, destroyed() { this.websock.close() //离开路由之后断开websocket连接 }, methods: { initWebSocket(){ //初始化weosocket const wsuri = "ws://127.0.0.1:8000/ws/chat/www/"; this.websock = new WebSocket(wsuri); this.websock.onmessage = this.websocketonmessage; this.websock.onopen = this.websocketonopen; this.websock.onerror = this.websocketonerror; this.websock.onclose = this.websocketclose; }, websocketonopen(){ //连接建立之后执行send方法发送数据 let actions = {"test":"12345"}; this.websocketsend(JSON.stringify(actions)); }, websocketonerror(){//连接建立失败重连 this.initWebSocket(); }, websocketonmessage(e){ //数据接收 // const redata = JSON.parse(e.data); console.log(e) this.msglist.push(e) }, websocketsend(Data){//数据发送 this.websock.send(Data); }, websocketclose(e){ //关闭 console.log('断开连接',e); }, }, } </script>
后端使用django channels,注意版本,不同版本使用方式稍有差异
https://channels.readthedocs.io/en/stable/
谷歌浏览器测试连接状态:
ws = new WebSocket('wss://a.b.c/ws/monitoring/syncConfig/'); 或者 ws = new WebSocket('wss://a.b.c/ws/monitoring/syncConfig/'); ws.onopen=function(data){console.log(data)}; ws.onmessage=function(data){console.log(data)}; ws.onclose=function(data){console.log(data)}; ws.onerror=function(data){console.log(data)}; ws.send('msg');