vue koa2即时聊天,实时推送比特币价格,爬取电影网站
技术栈
vue vuex vue-router socket.io koa2 mongodb pm2自动化部署 图灵机器人 [npm script打包,cdn同步,服务器上传一个命令全搞定]
功能清单
登陆注册
获取聊天记录(包含前端分页优化)
发送文字,表情,文件消息
创建群组,添加群组,群组搜索
修改个人信息,群组信息
图片裁剪压缩上传
私聊
图灵机器人接入
定时任务爬取电影和btc等数字货币的价格并使用socket.io实时推送给所有客户端
前端一键打包同步到七牛cdn并上传到服务器的实现
server端的pm2自动部署
效果演示chrome下F12或者手机扫描下面的二维码
后端的代码暂时不开放出来,因为涉及到很多个人的配置数据,如果实在需要可以加微信 MSC199312 (需要付费0.0!),毕竟这个小项目断断续续也做了几个星期,也还花了些心思,而且涉及的知识点也都还是很广很实用的,还望理解,其实主要原因还是穷[泪奔]
部分代码
客户端 main.js
import Vue from 'vue'
import App from './App'
import router from './router'
import VueLazyload from 'vue-lazyload'
import store from '@/store'
import io from 'socket.io-client'
import '@/assets/js/remChange'
import '@/assets/js/request'
// import { wxConfig, updateShare } from '@/assets/js/wxenv'
import '@/assets/css/common.scss'
import 'swiper/dist/css/swiper.min.css'
import config from '@/assets/js/config'
import filters from '@/assets/js/filters'
import { openToast } from '@/assets/js/tools'Vue.config.productionTip = false// 初始化全局过滤器
Object.keys(filters).forEach(item => {Vue.filter(item, filters[item])
})// 懒加载
Vue.use(VueLazyload, {attempt: 1,// preLoad: 1.3,error: require('./assets/images/404.png'),loading: require('./assets/images/loading-img2.gif'),// the default is ['scroll', 'wheel', 'mousewheel', 'resize', 'animationend', 'transitionend']listenEvents: [ 'scroll' ]
})Vue.prototype.$config = configrouter.beforeEach((to, from, next) => {// 如果未匹配到路由if (to.matched.length === 0) {// 如果上级也未匹配到路由则跳转登录页面,如果上级能匹配到则转上级路由from.name ? next({ name: from.name }) : next('/')} else {// 路由切换时改变页面标题document.querySelector('title').innerHTML = to.name// 统计代码if (to.path) _czc.push(['_trackPageview', '/#' to.fullPath], '')next()}
})// 路由变化重新配置微信分享
router.afterEach(to => {// wxConfig(() => updateShare())
})// socket.io 初始化
const socket = io.connect(config.socketBase)
Vue.prototype.$socket = socket
Vue.prototype.$socketEmiter = (name, data) => {store.commit('isLoading', true)return new Promise((resolve) => {socket.emit(name, data, res => {console.log(`${name}>>>`, res)store.commit('isLoading', false)if (res.status === 1) {resolve(res.data)} else {openToast({msg: res.message,duration: 1500})}})})
}/* eslint-disable no-new */
const app = new Vue({el: '#app',router,store,template: '<App/>',components: { App }
})
server端 app.js
const Koa = require('koa')
const { resolve } = require('path')
const glob = require('glob')
const { connectDatabase, initAllSchema, initDefaultUser } = require('./database/init')
const config = require('./config')const useMiddlewares = app => {glob.sync(resolve(__dirname, './middlewares', '**/*.js')).forEach(item => {require(item)(app)})
}(async () => {console.log('数据库初始化...')await connectDatabase()initAllSchema()await initDefaultUser()const app = new Koa()console.log('挂载socket.io...')const server = require('http').Server(app.callback())const io = require('socket.io').listen(server)require('./socket')(io)// 暴露出io可在其他地方做推送功能module.exports.io = ioconsole.log('挂载中间件...')useMiddlewares(app)console.log('初始化定时任务...')// 多了进行一下封装?require('./tools/crawlMovie')require('./tools/crawlCoin')server.listen(config.server.PORT, () => {console.log('正在监听' config.server.PORT '端口...')})})()
部分运行截图
最后贴上git地址欢迎给个star
vue koa2即时聊天,实时推送比特币价格,爬取电影网站相关推荐
- python 实时数据推送_python scrapy 爬取金十数据并自动推送到微信
一.背景 因业务需要获取风险经济事件并采取应对措施,但因为种种原因又疏忽于每天去查看财经日历,于是通过爬取金十数据网站并自动推送到微信查看. 二.目标实现 image 三.环境与工具 1.pychar ...
- WEB 实时推送技术总结
前言 随着 Web 的发展,用户对于 Web 的实时推送要求也越来越高 ,比如,工业运行监控.Web 在线通讯.即时报价系统.在线游戏等,都需要将后台发生的变化主动地.实时地传送到浏览器端,而不需要用 ...
- Web 实时推送技术如何弥补 HTTP 协议的缺陷? | 技术头条
作者 | 浪里行舟 责编 | 郭芮 人工智能的现状及今后发展趋势如何? https://edu.csdn.net/topic/ai30?utm_source=csdn_bw 随着 Web 的发展,用 ...
- 逐句回答,流式返回,ChatGPT采用的Server-sent events后端实时推送协议Python3.10实现,基于Tornado6.1
善于观察的朋友一定会敏锐地发现ChatGPT网页端是逐句给出问题答案的,同样,ChatGPT后台Api接口请求中,如果将Stream参数设置为True后,Api接口也可以实现和ChatGPT网页端一样 ...
- php主动推送弹幕_百万在线的美拍直播弹幕系统的实时推送技术实践之路
1.内容概述 1.jpg (30.13 KB, 下载次数: 321) 2 年前 上传 直播弹幕是直播系统的核心功能之一.如何迅速作出一个有很好扩展性的弹幕系统?如何应对业务迅速发展?相信很多工程师/架 ...
- ASP.NET Core 使用SignalR后台实时推送数据给Echarts展示图表
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...
- Web 实时推送技术的总结
前言 随着 Web 的发展,用户对于 Web 的实时推送要求也越来越高 ,比如,工业运行监控.Web 在线通讯.即时报价系统.在线游戏等,都需要将后台发生的变化主动地.实时地传送到浏览器端,而不需要用 ...
- Azure SignaIR 将数据从服务器实时推送到Web 和移动浏览器、桌面应用、移动应用等客户端
本文章完整免费视频讲解地址: Azure SignaIR-向各种客户端实时推送 常规的推送技术:Websocket /服务器发送事件 (SSE) /长轮询等其他技术. SignaIR存在了很长的历 ...
- html站内消息列表,WebSocket实现站内消息实时推送
关于WebSocket WebSocket是HTML5 开始提供的一种在单个TCP连接上进行全双工通讯的协议.什么是全双工?就是在同一时间可以发送和接收消息,实现双向通信,比如打电话.WebSocke ...
最新文章
- ubuntu开启ssh
- Arraylist理解(2)扩容
- FineReport的JS编辑框和URL地址栏语法简介
- 【图论】Kruskal算法求最小生成树详解
- SHIFT-JIS编码范围
- 设计模式学习笔记-装饰模式
- linux 如何重建mbr,重建mbr要不要勾选
- bluetoothctl No default controller available
- 5D论文PMF及改进
- [Vue warn]: The client-side rendered virtual DOM tree is not matching server-rendered content.
- 一个假猪套神器:NET CAT-NC
- acwing349 黑暗城堡 ——最短路径生成树
- 数字图像处理报告:实验3 同态滤波、频域滤波、傅里叶变换性质、DCT变换性质
- python 通达信板块_通达信如何自定义选股,使用python在通达信里面选股
- Go 使用for range time.Tick() 设置定时器
- 大学临近结束回望高中
- 元宇宙只是未来技术演化的外衣
- 打通apk到hal层
- QIIME 2 2020.11发布啦
- USB扫码枪二维码读取(一)——U3D篇
热门文章
- Java面向对象(12)--对象类型转换 (Casting )
- 【强化学习】可视化学习tensorboard
- oracle sysnonym,Oracle权限
- 想办法解决window刷新的问题
- 前端:jQuery笔记
- 2015.7.11js-10(无缝滚动)
- 消息队列mysql redis那个好_Redis与RabbitMQ作为消息队列的比较
- 米线店结账程序 装饰着模式_实验报告2_装饰者模式
- python 消息队列 get是从队首还是队尾取东西_python分布式爬虫中消息队列知识点详解...
- redhat/centos 搭建svn服务器环境