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 相关文章推荐
js checkbox(复选框) 使用集锦
Apr 28 Javascript
js选取多个或单个元素的实现代码(用class)
Aug 22 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
Dec 10 Javascript
JQuery实现简单验证码提示解决方案
Dec 20 Javascript
Jquery如何实现点击时高亮显示代码
Jan 22 Javascript
document.compatMode的CSS1compat使用介绍
Apr 03 Javascript
jQuery中filter()方法用法实例
Jan 06 Javascript
jquery实现顶部向右伸缩的导航区域代码
Sep 02 Javascript
利用js+css+html实现固定table的列头不动
Dec 08 Javascript
vue项目常用组件和框架结构介绍
Dec 24 Javascript
AngularJS下$http服务Post方法传递json参数的实例
Mar 29 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
May 28 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 curl 获取响应的状态码的方法
2014/01/13 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
微信小程序表单验证form提交错误提示效果
2020/06/19 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
python利用ffmpeg进行录制屏幕的方法
2019/01/10 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
如何使用PHP session
2015/04/21 面试题
银行实习鉴定
2013/12/13 职场文书
经贸专业毕业生求职信
2014/03/23 职场文书
一位农村小子的自荐信
2014/04/07 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
党校学习党性分析材料
2014/12/19 职场文书
公司考勤管理制度
2015/08/04 职场文书
三八节祝酒词
2015/08/11 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
使用Redis实现实时排行榜功能
2021/07/02 Redis