vue 如何使用websocket
vue 如何使用websocket
·
最近在项目中管理界面需要和后台实时交互,故使用了websocket。但是网上未发现vue websocket 比较好的例子。故自己写了一个。
其他不说直接上代码:
<template> <div> </div> </template> <script> export default { data() { return { websock: null, } }, methods: { threadPoxi(){ // 实际调用的方法 //参数 const agentData = "mymessage"; //若是ws开启状态 if (this.websock.readyState === this.websock.OPEN) { this.websocketsend(agentData) } // 若是 正在开启状态,则等待300毫秒 else if (this.websock.readyState === this.websock.CONNECTING) { let that = this;//保存当前对象this setTimeout(function () { that.websocketsend(agentData) }, 300); } // 若未开启 ,则等待500毫秒 else { this.initWebSocket(); let that = this;//保存当前对象this setTimeout(function () { that.websocketsend(agentData) }, 500); } }, initWebSocket(){ //初始化weosocket //ws地址 const wsuri = process.env.WS_API + "/websocket/threadsocket"; this.websock = new WebSocket(wsuri); this.websock.onmessage = this.websocketonmessage; this.websock.onclose = this.websocketclose; }, websocketonmessage(e){ //数据接收 const redata = JSON.parse(e.data); console.log(redata.value); }, websocketsend(agentData){//数据发送 this.websock.send(agentData); }, websocketclose(e){ //关闭 console.log("connection closed (" + e.code + ")"); } }, created(){ this.initWebSocket() } } </script>
其中:threadPoxi方法是关键。如果ws已经连接则直接发送消息;如正在开启状态,则等待300毫秒,再发送消息;若未开启 ,则等待500毫秒,再发送消息。
更多推荐
已为社区贡献1条内容
所有评论(0)