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实现的一个简单进度条效果实例
May 12 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
Mar 02 Javascript
jquery带翻页动画的电子杂志代码分享
Aug 21 Javascript
javascript设计简单的秒表计时器
Sep 05 Javascript
Google 地图API Map()构造器详解
Aug 06 Javascript
JavaScript性能优化总结之加载与执行
Aug 11 Javascript
详解webpack 如何集成第三方js库
Jun 29 Javascript
浅谈Angular4实现热加载开发旅程
Sep 08 Javascript
Vue v2.5 调整和更新不完全问题
Oct 24 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
Sep 28 Javascript
JS面试题大坑之隐式类型转换实例代码
Oct 14 Javascript
react写一个select组件的实现代码
Apr 03 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 带逗号千位符数字的处理方法
2012/01/10 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
python 提取文件的小程序
2009/07/29 Python
python操作xml文件示例
2014/04/07 Python
python求列表交集的方法汇总
2014/11/10 Python
Python 字典dict使用介绍
2014/11/30 Python
Python简单实现控制电脑的方法
2018/01/22 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
研究生求职推荐信范文
2013/11/30 职场文书
中学教师自我鉴定
2014/02/07 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
保护环境建议书作文400字
2015/09/14 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers