vue websocket,複製即用
阿新 • • 發佈:2021-11-04
<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/