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 相关文章推荐
在textarea文本域中显示HTML代码的方法
Mar 06 Javascript
javascript变量作用域使用中常见错误总结
Mar 26 Javascript
javaScript函数中执行C#代码中的函数方法总结
Aug 07 Javascript
通过JS动态创建一个html DOM元素并显示
Oct 15 Javascript
jQuery拖拽插件gridster使用指南
Apr 21 Javascript
jquery使用each方法遍历json格式数据实例
May 18 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
Sep 17 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
Sep 21 Javascript
关于Vue.js一些问题和思考学习笔记(1)
Dec 02 Javascript
JS实现简单拖拽效果
Jun 21 Javascript
Vue实现根据hash高亮选项卡
May 27 Javascript
微信小程序开发(二):页面跳转并传参操作示例
Jun 01 Javascript
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截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
JavaScript中最常见的三个面试题解析
2017/03/04 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
Python中异常重试的解决方案详解
2017/05/05 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
Python 去除字符串中指定字符串
2020/03/05 Python
HTML5 canvas基本绘图之绘制线条
2016/06/27 HTML / CSS
应届生污水处理求职信
2013/11/06 职场文书
大学生收银员求职信分享
2014/01/02 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
小学运动会入场词
2015/07/18 职场文书
python自动计算图像数据集的RGB均值
2021/06/18 Python