vue使用websocket的方法实例分析


Posted in Javascript onJune 22, 2019

本文实例讲述了vue使用websocket的方法。分享给大家供大家参考,具体如下:

最近项目需要使用到websocket 但是框架是vue  网上查阅很多资料 vue-websocket 老是连接不上 索性就不适用封装的插件了,直接使用原生的websocket  我这边需求是 只需要接受就好 不需要发送 代码如下:

爬坑之路:vue里面this指向问题

第一版 使用原生js

mounted(){
 console.log(this)----------------------------------------------------------this指向vue
 this.initWebpack();
},
methods: {
  initWebpack() {
    let websocket = '';
    if ('WebSocket' in window) {
      websocket = new WebSocket("ws://192.168.1.99:8080/tv/websocket");
    } else {
      alert('当前浏览器 Not support websocket')
    } //连接成功建立的回调方法 websocket.onopen = function () { console.log("WebSocket连接成功")
    console.log(this)----------------------------------------------------------this指向websocket
  };
//接收到消息的回调方法
websocket.onmessage = function (event) {
console.log(this)
console.log(event);
 this.productinfos=JSON.parse(event.data);//websocket请求过来的是string 需要格式
 if(demo.offsetHeight<demo1.offsetHeight){//内部比外部高度大的时候滑动
this.upScroll()//这是this指向websocket 所以没有此方法 会报错
}
this.sliceArray() }
 }
 };
//连接关闭的回调方法 websocket.onclose = function () {
console.log("WebSocket连接关闭");
};
//连接发生错误的回调方法 websocket.onerror = function () {
console.log("WebSocket连接发生错误");
};
//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
 window.onbeforeunload = function () {
websocket.close();
//关闭WebSocket连接 };
 },
sliceArray(){//截取数组的后四位 },
 upScroll(){ },
}

第二版:正解

methods:{
 initWebpack(){//初始化websocket
  const wsuri = "ws地址";
  this.websock = new WebSocket(wsuri);//这里面的this都指向vue
  this.websock.onopen = this.websocketopen;
  this.websock.onmessage = this.websocketonmessage;
  this.websock.onclose = this.websocketclose;
  this.websock.onerror = this.websocketerror;
 },
 websocketopen(){//打开
  console.log("WebSocket连接成功")
 },
 websocketonmessage(e){ //数据接收
  console.log(e)
  this.productinfos = JSON.parse(e.data);
 },
 websocketclose(){ //关闭
  console.log("WebSocket关闭");
 },
 websocketerror(){ //失败
  console.log("WebSocket连接失败");
 },
}

this.websock.onopen  的 this指向的是websocket 如果想要给vue里面的data里面的变量赋值 就需要 this指向vue 所以需要对websocket的方法赋值

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
JS实现在Repeater控件中创建可隐藏区域的代码
Sep 16 Javascript
jQuery trigger()方法用法介绍
Jan 13 Javascript
JS实现简单的键盘打字的效果
Apr 24 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
May 15 Javascript
检查表单元素的值是否为空的实例代码
Jun 16 Javascript
如何使用headjs来管理和异步加载js
Nov 29 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
Jan 19 Javascript
bootstrap模态框远程示例代码分享
May 22 Javascript
JavaScript实现的DOM绘制柱状图效果示例
Aug 08 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
Dec 20 Javascript
vue实现树形结构样式和功能的实例代码
Oct 15 Javascript
JavaScript, select标签元素左右移动功能实现
May 14 Javascript
JS实现简单的文字无缝上下滚动功能示例
Jun 22 #Javascript
js图片查看器插件用法示例
Jun 22 #Javascript
JS实现继承的几种常用方式示例
Jun 22 #Javascript
让 babel webpack vue 配置文件支持智能提示的方法
Jun 22 #Javascript
简单了解TypeScript中如何继承 Error 类
Jun 21 #Javascript
如何在JavaScript中谨慎使用代码注释
Jun 21 #Javascript
简单了解JavaScript中常见的反模式
Jun 21 #Javascript
You might like
php5.5中类级别的常量使用介绍
2013/10/02 PHP
Yii配置文件用法详解
2014/12/04 PHP
PHP页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
JS继承用法实例分析
2015/02/05 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
js仿微信抢红包功能
2020/09/25 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
python在linux中输出带颜色的文字的方法
2014/06/19 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
python脚本实现验证码识别
2018/06/07 Python
Python引用计数操作示例
2018/08/23 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
python使用列表的最佳方案
2020/08/12 Python
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
佳能德国网上商店:Canon德国
2017/03/18 全球购物
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
军训自我鉴定范文
2014/02/13 职场文书
小学综合实践活动总结
2014/07/07 职场文书
团队会宣传标语
2014/10/09 职场文书
荆州古城导游词
2015/02/06 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers
详解Vue3使用axios的配置教程
2022/04/29 Vue.js