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之小练习代码
Oct 12 Javascript
通过JS获取用户本地图片路径并显示的代码
Feb 16 Javascript
jQuery中slideUp 和 slideDown 的点击事件
Feb 26 Javascript
Vue概念及常见命令介绍(1)
Dec 08 Javascript
Angular使用Md5加密的解决方法
Sep 16 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
Jul 31 Javascript
opencv 识别微信登录验证滑动块位置
Aug 07 Javascript
JavaScript闭包原理与用法实例分析
Aug 10 Javascript
详解如何配置vue-cli3.0的vue.config.js
Aug 23 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
Sep 12 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
Feb 26 Javascript
使用js和canvas实现时钟效果
Sep 08 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
php递归实现无限分类的方法
2015/07/28 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
[07:47]DOTA2国际邀请赛采访专栏:探访Valve总部
2013/08/08 DOTA
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
Python中super函数用法实例分析
2019/03/18 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
python中open函数的基本用法示例
2019/09/07 Python
python生成器用法实例详解
2019/11/22 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
大一期末自我鉴定
2013/12/13 职场文书
党员干部承诺书范文
2014/03/25 职场文书
村长贪污检举信
2014/04/04 职场文书
租车协议书
2015/01/27 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
sql server 累计求和实现代码
2022/02/28 SQL Server