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 相关文章推荐
JavaScript入门教程(5) js Screen屏幕对象
Jan 31 Javascript
学习ExtJS(二) Button常用方法
Oct 07 Javascript
简单的两种Extjs formpanel加载数据的方式
Nov 09 Javascript
jquery实现弹出窗口效果的实例代码
Nov 28 Javascript
教你如何终止JQUERY的$.AJAX请求
Feb 23 Javascript
js实现常用排序算法
Aug 09 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
Dec 26 Javascript
原生JS实现小小的音乐播放器
Oct 16 Javascript
深入理解Vue官方文档梳理之全局API
Nov 22 Javascript
JavaScript设计模型Iterator实例解析
Jan 22 Javascript
手机浏览器唤起微信分享(JS)
Oct 11 Javascript
JavaScript 定时器详情
Nov 11 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
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
PHP一个简单的无需刷新爬虫
2019/01/05 PHP
php测试kafka项目示例
2020/02/06 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
清除输入框内的空格
2016/12/21 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
Vue 自定义指令功能完整实例
2019/09/17 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
Numpy截取指定范围内的数据方法
2018/11/14 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
房地产出纳岗位职责
2013/12/01 职场文书
茶叶生产计划书
2014/01/10 职场文书
迟到检讨书300字
2014/02/14 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
文明社区申报材料
2014/08/21 职场文书
出差报告范文
2014/11/06 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
小时代观后感
2015/06/10 职场文书
mysql 子查询的使用
2022/04/28 MySQL