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 获取HTML DOM节点元素的方法小结
Apr 24 Javascript
iframe 异步加载技术及性能分析
Jul 19 Javascript
javascript事件模型实例分析
Jan 30 Javascript
Javascript中arguments和arguments.callee的区别浅析
Apr 24 Javascript
jQuery表格行上移下移和置顶的实现方法
Oct 08 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
Aug 24 Javascript
微信小程序的mpvue框架快速上手指南
May 15 Javascript
浅谈TypeScript的类型保护机制
Feb 23 Javascript
JavaScript 接口原理与用法实例详解
May 12 Javascript
Vue 根据条件判断van-tab的显示方式
Aug 03 Javascript
Element-UI 使用el-row 分栏布局的教程
Oct 26 Javascript
Vue+Element UI实现概要小弹窗的全过程
May 30 Vue.js
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动态生成VRML网页
2006/10/09 PHP
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
php函数与传递参数实例分析
2014/11/15 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
jQuery Ajax之load()方法
2009/10/12 Javascript
JS 遮照层实现代码
2010/03/31 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
KMP算法精解及其Python版的代码示例
2016/06/01 Python
python+opencv识别图片中的圆形
2020/03/25 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
python IDLE添加行号显示教程
2020/04/25 Python
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
实习自我鉴定模板
2013/09/28 职场文书
移动通信专业自荐信范文
2013/11/12 职场文书
消防安全责任书范本
2014/04/15 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
法人代表证明书范本
2015/06/18 职场文书
九不准学习心得体会
2016/01/23 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS