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 按钮点击触发(兼容IE、火狐)
Aug 07 Javascript
顶部缓冲下拉菜单导航特效的JS代码
Aug 27 Javascript
两个数组去重的JS代码
Dec 04 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
Dec 29 Javascript
JavaScript中匿名函数的用法及优缺点详解
Jun 01 Javascript
javascript类型系统——undefined和null全面了解
Jul 13 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
Sep 05 Javascript
详解用vue编写弹出框组件
Jul 04 Javascript
JavaScript canvas基于数组生成柱状图代码实例
Mar 06 Javascript
Vue插件之滑动验证码用法详解
Apr 05 Javascript
vuex中store存储store.commit和store.dispatch的用法
Jul 24 Javascript
一百多行代码实现react拖拽hooks
Mar 23 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
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
jquery 1.3.2 IE8中的一点点的小问题解决方法
2009/07/10 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
Node.js 制作实时多人游戏框架
2015/01/08 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
Python去除列表中重复元素的方法
2015/03/20 Python
python网络编程之数据传输UDP实例分析
2015/05/20 Python
Python中常见的数据类型小结
2015/08/29 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
python反编译学习之字节码详解
2019/05/19 Python
Python imread、newaxis用法详解
2019/11/04 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
采购类个人求职的自我评价
2014/02/18 职场文书
六个一活动实施方案
2014/03/21 职场文书
升学宴演讲稿
2014/09/01 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang
python for循环赋值问题
2021/06/03 Python
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers