Vue.js如何使用Socket.IO的示例代码


Posted in Javascript onSeptember 05, 2019

在很多需求业务中,都需要浏览器和服务器实时通信来实现功能,比如:扫码登录(扫码后,手机确认登录,PC网页完成登录并跳转)、订单语言提醒等,这些都是建立在两端实时通信的基础上的。对前端而言,来实现浏览器和服务器实时通信,最好的选择就是Socket.IO库,能够快速的实现两端实时通信功能。

Vue.js如何使用Socket.IO的示例代码

1、什么是 Socket.IO?

Socket.IO 是一个WebSocket库,可以在浏览器和服务器之间实现实时,双向和基于事件的通信。它包括:Node.js服务器库、浏览器的Javascript客户端库。它会自动根据浏览器从WebSocket、AJAX长轮询、Iframe流等等各种方式中选择最佳的方式来实现网络实时应用,非常方便和人性化,而且支持的浏览器最低达IE5.5

2、Socket.IO 主要特点

Vue.js如何使用Socket.IO的示例代码

(1)、支持浏览器/Nodejs环境 (2)、支持双向通信 (3)、API简单易用 (4)、支持二进制传输 (5)、减少传输数据量

3、Vue.js 中 Socket.IO的使用

Vue.js如何使用Socket.IO的示例代码

(1)客户端

npm install vue-socket.io --save

main.js添加下列代码

import VueSocketIO from 'vue-socket.io'
 
Vue.use(new VueSocketIO({
 debug: true,
 // 服务器端地址
 connection: 'http://localhost:3000',
 vuex: {
 }
}))

发送消息和监听消息

//发送信息给服务端
this.$socket.emit('login',{
 username: 'username',
 password: 'password'
});

//接收服务端的信息
this.sockets.subscribe('relogin', (data) => {
 console.log(data)
})

(2)服务端

Vue.js如何使用Socket.IO的示例代码

服务端,我们基于express搭建node服务器。

npm install --save express
npm install --save socket.io

index.js文件

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
 res.send('<h1>你好web秀</h1>');
});
 
io.on('connection',function(socket) {
 //接收数据
 socket.on('login', function (obj) {    
  console.log(obj.username);
  // 发送数据
  socket.emit('relogin', {
  msg: `你好${obj.username}`,
  code: 200
  }); 
 });
});
 
http.listen(3000, function(){
 console.log('listening on *:3000');
});

然后启动服务端服务

node index.js

客户端即可查看效果。

4、Socket.IO有哪些事件

Vue.js如何使用Socket.IO的示例代码

io.on('connect', onConnect);

function onConnect(socket){

 // 发送给当前客户端
 socket.emit(
 'hello', 
 'can you hear me?', 
 1, 
 2, 
 'abc'
 );

 // 发送给所有客户端,除了发送者
 socket.broadcast.emit(
 'broadcast', 
 'hello friends!'
 );

 // 发送给同在 'game' 房间的所有客户端,除了发送者
 socket.to('game').emit(
 'nice game', 
 "let's play a game"
 );

 // 发送给同在 'game1' 或 'game2' 房间的所有客户端,除了发送者
 socket.to('game1').to('game2').emit(
 'nice game', 
 "let's play a game (too)"
 );

 // 发送给同在 'game' 房间的所有客户端,包括发送者
 io.in('game').emit(
 'big-announcement', 
 'the game will start soon'
 );

 // 发送给同在 'myNamespace' 命名空间下的所有客户端,包括发送者
 io.of('myNamespace').emit(
 'bigger-announcement', 
 'the tournament will start soon'
 );

 // 发送给指定 socketid 的客户端(私密消息)
 socket.to(<socketid>).emit(
 'hey', 
 'I just met you'
 );

 // 包含回执的消息
 socket.emit(
 'question', 
 'do you think so?', 
 function (answer) {}
 );

 // 不压缩,直接发送
 socket.compress(false).emit(
 'uncompressed', 
 "that's rough"
 );

 // 如果客户端还不能接收消息,那么消息可能丢失
 socket.volatile.emit(
 'maybe', 
 'do you really need it?'
 );

 // 发送给当前 node 实例下的所有客户端(在使用多个 node 实例的情况下)
 io.local.emit(
 'hi', 
 'my lovely babies'
 );
};

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
纯CSS打造的导航菜单(附jquery版)
Aug 07 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
Sep 01 Javascript
JavaScript中switch语句的用法详解
Jun 03 Javascript
js判断某个字符出现的次数的简单实例
Jun 03 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
Dec 24 Javascript
javascript基本数据类型和转换
Mar 17 Javascript
JavaScript中Require调用js的实例分享
Oct 27 Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
Jun 10 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
Aug 10 Javascript
Vue实现可移动水平时间轴
Jun 29 Javascript
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
vue路由守卫及路由守卫无限循环问题详析
Sep 05 #Javascript
关于JS解构的5种有趣用法
Sep 05 #Javascript
vue draggable resizable gorkys与v-chart使用与总结
Sep 05 #Javascript
JavaScript获取某一天所在的星期
Sep 05 #Javascript
layui table设置某一行的字体颜色方法
Sep 05 #Javascript
微信小程序HTTP接口请求封装代码实例
Sep 05 #Javascript
layui table去掉右侧滑动条的实现方法
Sep 05 #Javascript
You might like
PHP下几种删除目录的方法总结
2007/08/19 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
Python计算回文数的方法
2015/03/11 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
深入浅出学习python装饰器
2017/09/29 Python
Python常见数字运算操作实例小结
2019/03/22 Python
Python selenium的基本使用方法分析
2019/12/21 Python
应届毕业生个人自我评价
2013/09/20 职场文书
网站编辑求职信
2013/10/17 职场文书
人力资源行政经理自我评价
2013/10/23 职场文书
2014年计算机专业个人自我评价
2014/01/19 职场文书
保密协议书范本
2014/04/22 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
开工典礼致辞
2015/07/29 职场文书
Python实现日志实时监测的示例详解
2022/04/06 Python
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android
对讲机知识
2022/04/07 无线电