socket应用(vue、node.js、M站)
socket应用(vue、node.js、M站)
前言:我们在做一些项目的时候需要做到实时变化,
比如我们有时候有需求会要求我们做一个类似于聊天室的页面

比如有些时候我们对某些东西进行点赞和刷票,需要实时显示出来

如果我们设置定时刷新内容,是一个比较不合适的事情(定时请求接口对性能会造成影响),所以我们需要socket来为我们提供实时性
Node.js与socket
我这个小项目是用Node自己给自己写的后台,使用了socket.io
首先启动一个socket服务
const server = require('http').createServer(()=>{
res.end('')
})
var io = require('socket.io')(server);
server.listen(9002)
//这个socket.io就是我们要使用的插件,
//随便你npm、cnpm还是yarn,把它给加进来
//这个9002是端口号,特指socket的端口号,不要与Node的端口号重复
明确需求触发socket
这个明确需求是什么意思呢,就是现在我们与socket已经建立链接了,那么我们在什么情况下触发socket?
比如我做个这个点赞,就是在用户触发点赞接口的时候,要触发socket
router.post('/updateZan', async (req, res) => {
//...省略内部操作
io.emit('msg','update')
})
//其实重点只有最后一句,那就是io.emit
//仔细看看像不像vue 的eventHub
//前面的msg是为这次的socket服务起的名字,
//后面的update就是这次的socket服务要向前端传输的内容
如此,Node.js这里就结束了
让我们镜头一转,看向前端需要哪些操作呢
Vue与socket
vue搭配socket更是方便的不行,因为vue有很多现成的插件
从main.js开始
import VueSocketio from 'vue-socket.io';
import socketio from 'socket.io-client';
//这两个都是插件,给我安排上 Vue.use(VueSocketio, socketio('http://localhost:9002/'));//与websocket服务端链接 new Vue({
router,
store,
sockets: {
connect: function () {
console.log('socket connected');
}
},
render: h => h(App)
}).$mount('#app') //还记得我刚刚提醒你们的端口号么,这里不要写错了
这里有个小坑坑,我刚开始只要main.js写成以上这样就会报错
TypeError: Cannot call a class as a function
解决方法:是安装的包版本不太行(具体原因我也不清楚)
把node_modules删掉,在package.json中把vue-socket.io版本改成"vue-socket.io": "^2.1.1-a"
然后重新install
解决
具体的.vue里
与data、methods同级的地方
sockets:{ //在此接收又服务器发送过来的数据 ps:注意此处的方法名要与服务器的发送的事件保持一致才能接收到
msg: function (val) {
console.log('接收到服务端消息1111', val);
this.getContent()
this.getCommit()
}
},
//还记得msg么,我刚刚起的名字,每当这个时候我就重新调取赞的数量接口,如此就实现了我所需要的实时
m站与socket
m站的原理也是:与后台的socket进行端口号绑定,并且当触发msg事件时,进行操作(我这里是页面强制刷新)

如果有对聊天室特别感兴趣的同学
这里有一份我百度的时候找到的大佬的代码,
并且附上大佬的链接,
代码在这个链接里有一个如何运行实例,点击下载源码即可。
可以参考
以上。
socket应用(vue、node.js、M站)的更多相关文章
- vue+node.js+webpack开发微信公众号功能填坑——v -for循环
页面整体框架实现,实现小功能,循环出数据,整体代码是上一篇 vue+node.js+webpack开发微信公众号功能填坑--组件按需引入 修改部门代码 app.vue <yd-flexbox&g ...
- TCP Socket Programming in Node.js
TCP Socket Programming in Node.js Posted on October 26th, 2011 under Node.jsTags: Client, node.js, S ...
- 小白学习VUE第二课:环境搭建 VUE Node.js VSCode template模板
环境搭建 VUE Node.js VSCode template模板: 首先安装node:http://www.runoob.com/nodejs/nodejs-install-setup.html ...
- mongodb & vue & node.js
mongodb mongodb & vue & node.js https://docs.mongodb.com/manual/tutorial/install-mongodb-on- ...
- 基于Unix Socket的可靠Node.js HTTP代理实现(支持WebSocket协议)
实现代理服务,最常见的便是代理服务器代理相应的协议体请求源站,并将响应从源站转发给客户端.而在本文的场景中,代理服务及源服务采用相同技术栈(Node.js),源服务是由代理服务fork出的业务服务(如 ...
- 基于Vue+node.js的个人博客
前言 作为一个年轻的程序员,而且是作为一个未来的前端工程师,怎么能没有一个属于自己的博客呢,于是乎在暑假咸鱼了一个多月后开始了我的博客的编写. 技术栈 前端 vue.js+scss 因为当时没学vu ...
- Vue+node.js+express+mysql实例---对图书信息进行管理
一个简单的 CURD 实例 ---对图书信息进行管理 目录 1 开发环境 1.1 前端开发环境 1.2 后端开发环境 2 数据库设计和创建 2.1 数据库和表设计 2.2 book 表设计 2.3 s ...
- 对www.518shengmao.com站资源打包,采用vue Node.js
最近闲游时间比较多,于是想搞个网站练练手,首先选域名在godday里选了个518shengmao.com,买了个1元的阿里云服务器,接下来程序了. 采用vue+nodejs来开发的 一.NodeJs环 ...
- Vue node.js商城-购物车模块
一.渲染购物车列表页面 新建src/views/Cart.vue获取cartList购物车列表数据就可以在页面中渲染出该用户的购物车列表数据 data(){ return { car ...
- Vue+node.js实现一个简洁的个人博客系统
本项目是一个用vue和node以及mysql实现的一个简单的个人博客系统,整体逻辑比较简单.但是可以我们完整的了解一个项目从数据库到后端到前端的实现过程,适合不太懂这一块的朋友们拿来练手. 本项目所用 ...
随机推荐
- IDEA启动项目内存溢出
一.java.lang.OutOfMemoryError: Java heap space 1.在tomcat设置界面 VM options添加参数 -server -XX:PermSize=512 ...
- QSettings 类
一 .QSettings介绍: 用户通常希望应用程序记住其设置.在windows中,这些设置保存在注册表中,ios在属性文件列表中,而unix,在缺乏标准的情况下,其存储在ini文本中.QSettin ...
- Pdf Convert Image 的解决方案
brew uninstall ghostscript brew install ghostscript gs -dNOPAUSE -sDEVICE=jpeg -r150 -sOutputFile=./ ...
- 算法(第四版)C# 习题题解——1.3.49 用 6 个栈实现一个 O(1) 队列
因为这个解法有点复杂,因此单独开一贴介绍. 那么这里就使用六个栈来解决这个问题. 这个算法来自于这篇论文. 原文里用的是 Pure Lisp,不过语法很简单,还是很容易看懂的. 先导知识——用两个栈模 ...
- nodejs-使用multer实现多张图片上传,express搭建脚手架
nodejs-使用multer实现多张图片上传,express搭建脚手架 在工作中,我们经常会看到用户有多张图片上传,并且预览展示的需求.那么在具体实现中又该怎么做呢? 本实例需要nodejs基础,本 ...
- cv2.getRotationMatrix2D函数
- Vue学习(一)Vue目录结构
安装教程网上一大把,可以自己搜索.记录下学习过程. 认识下Vue的目录结构,取自:https://www.cnblogs.com/dragonir/p/8711761.html vue 文件目录结构详 ...
- Markdown介绍
如何使用.md文件 本文档为Markdown格式,建议利用Visual Studio Code+ Markdown All in One插件修改.参考链接:基础mdbasic,高级mdextended
- 使用代理实现对C# list distinct操作
范型在c#编程中经常使用,而经常用list 去存放实体集,因此会设计到对list的各种操作,比较常见的有对list进行排序,查找,比较,去重复.而一般的如果要对list去重复如果使用linq dist ...
- python转义符