vue-socket.io接收不到数据问题的解决方法


Posted in Javascript onMay 13, 2020

最近公司的一个vue项目用到了vue-socket.io来处理socket数据传输,之前用过socket.io-client,现在知道vue-socket.io是基于socket.io-client的一层封装,将socket挂于全局从而更方便的书写。

于是把代码拉取下来运行:

vue-socket.io接收不到数据问题的解决方法

什么鬼,同样的代码为什么我的就接收不到数据,自己新建一个测试一下吧!

先用express和socket.io搭个小socket服务器:

let express = require('express');
let app = express();

let server= require('http').Server(app);
let io = require('socket.io')(server);

io.on('connect', (socket) => {
  setInterval(() => {
    socket.emit('hi','hello')
  },2000)
  socket.on('hello', (data) => {
    console.log('hello',data)
    socket.emit('hi','get it')
  })
  socket.on('disconnect', (data) => {
    console.log('断开', data)
  })
})

server.listen(8080);

再搭个vue-cli3环境,main.js里use一下socket:

import Vue from 'vue'
import App from './App.vue'
import VueSocketIO from 'vue-socket.io'

Vue.config.productionTip = false

Vue.use(new VueSocketIO({
 debug: true,
 connection: 'http://127.0.0.1:8080',
}))

new Vue({
 render: h => h(App),
}).$mount('#app')

再去组件里监听一下:

<script>
export default {
 sockets: {
  connect() {
   console.log('链接成功');
  },
  disconnect() {
   console.log('断开链接')
  },
  reconnect() {
   console.log('重新链接')
  },
  hi(res) {
   console.log('VueSocketIO', res)
  }
 }
}
</script>

结果:

vue-socket.io接收不到数据问题的解决方法

为什么,是socket数据没发送过来吗?我装个socket.io-client试试:

import io from 'socket.io-client'
export default {
 mounted() {
  io('http://127.0.0.1:8080').on('hi', (res) => {
   console.log('socket.io-client', res)
  })
 },
}

vue-socket.io接收不到数据问题的解决方法

没问题,数据传过来了,但vue-socket.io为啥不行,不管了,先向服务端发送一条信息看能不能收到:

this.$socket.emit('hello','i am wk')

vue-socket.io接收不到数据问题的解决方法

没问题,收到了,所以现在是socket已经连接上了,客户端可以向服务端正常发送数据,但服务端也向客户端发送数据了,上面用socket.io-client可以正常接收已经证明这一点了,问题是vue-socket.io没有正确写法去接收数据,似乎api上的写法出bug了。

打印一下this发现因为引入vue-socket.io的原因,this上面挂了一个sockets属性:

vue-socket.io接收不到数据问题的解决方法

this.sockets下有一个listener属性,看这个名字就感觉有戏,试一下:

this.sockets.listener.subscribe('hi', (data) => {
   console.log('++++++++++',data)
  })

vue-socket.io接收不到数据问题的解决方法

哇哦,可以用,好吧,就先这样用吧,虽然还是不知道sockets:{}这种的写法为什么不起作用。

到此这篇关于vue-socket.io接收不到数据问题的解决方法的文章就介绍到这了,更多相关vue-socket.io接收不到数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
对google个性主页的拖拽效果的js的完整注释[转]
Apr 10 Javascript
JavaScript中的对象化编程
Jan 16 Javascript
javascript 写类方式之七
Jul 05 Javascript
精心挑选的15个jQuery下拉菜单制作教程
Jun 15 Javascript
jQuery实现图像旋转动画效果
May 29 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
Oct 11 Javascript
微信小程序实现城市列表选择
Jun 05 Javascript
angular 内存溢出的问题解决
Jul 12 Javascript
js防抖和节流的深入讲解
Dec 06 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
Jan 18 Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 Javascript
浅谈Vue.use到底是什么鬼
Jan 21 Javascript
Vue关于组件化开发知识点详解
May 13 #Javascript
Vue 中获取当前时间并实时刷新的实现代码
May 12 #Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
May 12 #Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
May 12 #Javascript
JavaScript 接口原理与用法实例详解
May 12 #Javascript
ES5新增数组的实现方法
May 12 #Javascript
JavaScript内置对象之Array的使用小结
May 12 #Javascript
You might like
PHP获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
功能强大的php分页函数
2016/07/20 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
python使用append合并两个数组的方法
2015/04/28 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
给同事的道歉信
2014/01/11 职场文书
党员大会主持词
2014/04/02 职场文书
伦敦奥运会口号
2014/06/13 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
学术会议通知范文
2015/04/15 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android