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 相关文章推荐
addEventListener和attachEvent二者绑定的执行函数中的this不相同
Dec 09 Javascript
js获取及判断键盘按键的方法
Dec 01 Javascript
javascript从作用域链谈闭包
Jul 29 Javascript
深入浅析Extjs中store分组功能的使用方法
Apr 20 Javascript
纯前端JavaScript实现Excel IO案例分享
Aug 26 Javascript
微信小程序通过api接口将json数据展现到小程序示例
Jan 20 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
Mar 29 Javascript
Vuejs实现带样式的单文件组件新方法
May 02 Javascript
js中url对象化管理分析
Dec 29 Javascript
React 组件中的 bind(this)示例代码
Sep 16 Javascript
layui输入框中只允许输入整数的实现方法
Sep 18 Javascript
关于element的表单组件整理笔记
Feb 05 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程序内部post数据的方法
2015/03/31 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
深入理解js函数的作用域与this指向
2016/05/28 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
JS实现颜色梯度与渐变效果完整实例
2016/12/30 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
python去除所有html标签的方法
2015/05/05 Python
Python pass详细介绍及实例代码
2016/11/24 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
Python subprocess模块常见用法分析
2018/06/12 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
python路径的写法及目录的获取方式
2019/12/26 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
Python 列表反转显示的四种方法
2020/11/16 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
矿泉水广告词
2014/03/20 职场文书
广告宣传策划方案
2014/05/21 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
护士自荐信怎么写
2015/03/06 职场文书
鸡毛信观后感
2015/06/11 职场文书
小学英语教师研修感悟
2015/11/18 职场文书