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 相关文章推荐
经验几则 推荐
Sep 05 Javascript
javascript 原型模式实现OOP的再研究
Apr 09 Javascript
JavaScript 常用函数库详解
Oct 21 Javascript
JS高级拖动技术 setCapture,releaseCapture
Jul 31 Javascript
JavaScript数组去重的五种方法
Nov 05 Javascript
vue开发心得和技巧分享
Oct 27 Javascript
前端开发之CSS原理详解
Mar 11 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
Aug 25 Javascript
vue下history模式刷新后404错误解决方法
Aug 18 Javascript
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
小程序server请求微信服务器超时的解决方法
May 21 Javascript
Vue Render函数原理及代码实例解析
Jul 30 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学习之变量的使用
2011/05/29 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
JS window.opener返回父页面的应用
2009/10/24 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
js中的string.format函数代码
2020/08/11 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
vue中的inject学习教程
2019/04/24 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
Python获取服务器信息的最简单实现方法
2015/03/05 Python
Python单例模式实例详解
2017/03/01 Python
python实现各进制转换的总结大全
2017/06/18 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
网络书店创业计划书
2014/02/07 职场文书
中华魂演讲稿
2014/05/13 职场文书
工厂见习报告范文
2014/10/31 职场文书
暑期工社会实践报告
2015/07/13 职场文书