美文网首页
Vue中使用websocket的正确使用方法

Vue中使用websocket的正确使用方法

作者: undefined汪少 | 来源:发表于2019-08-01 15:15 被阅读0次

首先写一个公共方法 socket.js

functiongetSocket(url, params, callback) {

  let socket;

  if(typeof(WebSocket) === 'undefined') {

    console.log('您的浏览器不支持WebSocket');

  } else{

    console.log('您的浏览器支持WebSocket');

    // 初始化 WebSocket 对象,指定要连接的服务器地址与端口建立连接

    socket = newWebSocket(url);

    // 打开事件

    socket.onopen = function() {

      console.log('Socket 已打开');

      socket.send(params);

    };

    // 获得消息事件

    socket.onmessage = function(msg) {

      // 发现消息进入, 开始处理前端触发逻辑

      callback(msg, socket);

    };

    // 关闭事件

    socket.onclose = function() {

      console.log('Socket 已关闭');

    };

    // 发生了错误事件

    socket.onerror = function() {

      console.log('Socket 发生了错误,请刷新页面');

      // 此时可以尝试刷新页面

    };

  }

}

export {

  getSocket

};

使用

test.vue

<script>

import {getSocket} from '@/utils/socket.js';

export default{

  data() {

    return{

      wsData: {}, // 保存 websocket 数据对象

      form: { // 表单

        name: '',

        age: ''

      }

    }

  },

  beforeDestroy() {

    this.wsData.close(); // 关闭 websocket

  },

  created() {

    this.getSocketData();

  },

  methods: {

    // 获取数据

    getSocketData() {

      let params = this.form;

      getSocket(

        `ws://path`,

        JSON.stringify(params),

        (data, ws) => {

          console.log(data, ws);

          // 保存数据对象, 以便发送消息

          this.wsData = ws;

        }

      );

    },

    // 发送数据

    sendSocketData() {

      let params = this.form;

      params.name = 'xx';

      params.age= '18';

      this.wsData.send(JSON.stringify(params));

    }

  }

}

</script>

相关文章

网友评论

      本文标题:Vue中使用websocket的正确使用方法

      本文链接:https://www.haomeiwen.com/subject/wwgqdctx.html