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 ajax服务器端与客户端通信的代码
Mar 28 Javascript
JS网页播放声音实现代码兼容各种浏览器
Sep 22 Javascript
js调用iframe实现打印页面内容的方法
Mar 04 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
Dec 31 Javascript
js实现感应鼠标图片透明度变化的方法
Feb 20 Javascript
JavaScript之Vue.js【入门基础】
Dec 06 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 Javascript
angularjs $http实现form表单提交示例
Jun 09 Javascript
js的Object.assign用法示例分析
Mar 05 Javascript
Vue 中获取当前时间并实时刷新的实现代码
May 12 Javascript
jQuery实现容器间的元素拖拽功能
Dec 01 jQuery
如何用JavaScript检测当前浏览器是无头浏览器
Apr 27 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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
谈谈PHP的输入输出流
2007/02/14 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
smarty简单入门实例
2014/11/28 PHP
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
Vue组件中slot的用法
2018/01/30 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
儿童python练习实例
2018/05/27 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
小学运动会入场式解说词
2014/02/18 职场文书
就业协议书怎么填
2014/09/15 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
你知道Java Spring的两种事务吗
2022/03/16 Java/Android
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技