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面向对象、prototype、call()、apply()
May 14 Javascript
JavaScript 设计模式学习 Singleton
Jul 27 Javascript
jquery 无限级联菜单案例分享
Mar 26 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
Feb 19 Javascript
JavaScript面向对象编写购物车功能
Aug 19 Javascript
Node.js复制文件的方法示例
Dec 29 Javascript
纯JS实现弹性导航条效果
Mar 06 Javascript
Bootstrap DateTime Picker日历控件简单应用
Mar 25 Javascript
Angular2 父子组件数据通信实例
Jun 22 Javascript
JS 使用 window对象的print方法实现分页打印功能
May 16 Javascript
解决vue-cli webpack打包后加载资源的路径问题
Sep 25 Javascript
node运行js获得输出的三种方式示例详解
Jul 02 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/04/25 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
IE iframe的onload方法分析小结
2010/01/07 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
Python模块搜索路径代码详解
2018/01/29 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
Django框架 信号调度原理解析
2019/09/04 Python
什么是python的自省
2020/06/21 Python
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
民主评议党员工作总结
2014/10/20 职场文书
师德师风学习材料
2014/12/19 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏