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 相关文章推荐
Jquery 高亮显示文本中重要的关键字
Dec 24 Javascript
jQuery在vs2008及js文件中的无智能提示的解决方法
Dec 30 Javascript
同时使用n个window onload加载实例介绍
Apr 25 Javascript
js如何实现设计模式中的模板方法
Jul 23 Javascript
js对象继承之原型链继承实例
Jan 10 Javascript
js获取url传值的方法
Dec 18 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
Jan 23 Javascript
Bootstrap页面缩小变形的快速解决办法
Feb 03 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
Jan 03 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
Aug 31 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
Oct 12 Javascript
jQuery实现鼠标滑动切换图片
May 27 jQuery
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
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
PHP加密解密类实例代码
2016/07/20 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
php中this关键字用法分析
2016/12/07 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
json 实例详细说明教程
2009/10/31 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
Seajs的学习笔记
2014/03/04 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
sails框架的学习指南
2014/12/22 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
vuejs指令详解
2017/02/07 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
python查看FTP是否能连接成功的方法
2015/07/30 Python
python保存网页图片到本地的方法
2018/07/24 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
python绘制中国大陆人口热力图
2018/11/07 Python
详解重置Django migration的常见方式
2019/02/15 Python
安装python及pycharm的教程图解
2019/10/10 Python
Python Lambda函数使用总结详解
2019/12/11 Python
pytorch进行上采样的种类实例
2020/02/18 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
python excel和yaml文件的读取封装
2021/01/12 Python
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
文字自荐书范文
2014/02/10 职场文书
决心书范文
2014/03/11 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
MySQL分库分表详情
2021/09/25 MySQL