Websocket 简单使用

vue3  

<script setup>
import { reactive, ref,onMounted ,onBeforeMount,onUnmounted} from 'vue'


onMounted(() => {
  initWebsocket()
})

onUnmounted(() => {
  WebSocketonclose()
})

const ws = reactive({
  socket: null,
})

const initWebsocket = () => {
  const wsuri = "ws://10.54.19.175:7001/ws"
  ws.socket = new WebSocket(wsuri)
  ws.socket.onmessage = WebSocketonmessage
  ws.socket.onopen = WebSocketonopen
  ws.socket.onclose = WebSocketonclose
  ws.socket.onerror = WebSocketonerror
}

const WebSocketonopen = () => {
  const data={ test: '123' }
  WebSocketsend(JSON.stringify(data))
}

const WebSocketonclose = (e) => {
  ws.socket && ws.socket.close()
  ws.socket = null
}

const WebSocketonmessage = (e) => {
  const data = JSON.parse(e.data)
  console.log(data)
}

const WebSocketonerror = (e) => {
  initWebsocket()
}

const WebSocketsend = (data) => {
  ws.socket.send(data)
}


</script>

node 后端  需要安装插件  egg-websocket-plugin@3.0.0-beta.0

config/plugin.js

module.exports = {
  // had enabled by egg
  // static: {
  //   enable: true,
  // }

  io: {
    enable: true,
    package: 'egg-websocket-plugin',
  },
};
 

 

const { Controller } = require('egg');

class HomeController extends Controller {
  async index() {
    const { ctx } = this;
    ctx.body = 'hi, egg';
  }
  async wsSocket() {
    const { ctx } = this;
    if (!ctx.websocket) {
      throw new Error('this function can only be use in websocket router');
    }
    console.log('client connected');
    const obj = { name: 'hello world' };
    setInterval(() => {
      ctx.websocket.send(JSON.stringify(obj));
    }, 2000);
    ctx.websocket
      .on('message', msg => {
        console.log('receive', msg);
      })
      .on('close', (code, reason) => {
        console.log('websocket closed', code, reason);
      });
  }
}

module.exports = HomeController;

  

posted @ 2024-01-29 14:28  \面朝阳光/  阅读(22)  评论(0编辑  收藏  举报