技术栈

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即时聊天,实时推送比特币价格,爬取电影网站相关推荐

  1. python 实时数据推送_python scrapy 爬取金十数据并自动推送到微信

    一.背景 因业务需要获取风险经济事件并采取应对措施,但因为种种原因又疏忽于每天去查看财经日历,于是通过爬取金十数据网站并自动推送到微信查看. 二.目标实现 image 三.环境与工具 1.pychar ...

  2. WEB 实时推送技术总结

    前言 随着 Web 的发展,用户对于 Web 的实时推送要求也越来越高 ,比如,工业运行监控.Web 在线通讯.即时报价系统.在线游戏等,都需要将后台发生的变化主动地.实时地传送到浏览器端,而不需要用 ...

  3. Web 实时推送技术如何弥补 HTTP 协议的缺陷? | 技术头条

    作者 | 浪里行舟 责编 | 郭芮 人工智能的现状及今后发展趋势如何?  https://edu.csdn.net/topic/ai30?utm_source=csdn_bw 随着 Web 的发展,用 ...

  4. 逐句回答,流式返回,ChatGPT采用的Server-sent events后端实时推送协议Python3.10实现,基于Tornado6.1

    善于观察的朋友一定会敏锐地发现ChatGPT网页端是逐句给出问题答案的,同样,ChatGPT后台Api接口请求中,如果将Stream参数设置为True后,Api接口也可以实现和ChatGPT网页端一样 ...

  5. php主动推送弹幕_百万在线的美拍直播弹幕系统的实时推送技术实践之路

    1.内容概述 1.jpg (30.13 KB, 下载次数: 321) 2 年前 上传 直播弹幕是直播系统的核心功能之一.如何迅速作出一个有很好扩展性的弹幕系统?如何应对业务迅速发展?相信很多工程师/架 ...

  6. ASP.NET Core 使用SignalR后台实时推送数据给Echarts展示图表

    什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...

  7. Web 实时推送技术的总结

    前言 随着 Web 的发展,用户对于 Web 的实时推送要求也越来越高 ,比如,工业运行监控.Web 在线通讯.即时报价系统.在线游戏等,都需要将后台发生的变化主动地.实时地传送到浏览器端,而不需要用 ...

  8. Azure SignaIR 将数据从服务器实时推送到Web 和移动浏览器、桌面应用、移动应用等客户端

    本文章完整免费视频讲解地址: Azure SignaIR-向各种客户端实时推送 常规的推送技术:Websocket /服务器发送事件 (SSE) /长轮询等其他技术. ​ SignaIR存在了很长的历 ...

  9. html站内消息列表,WebSocket实现站内消息实时推送

    关于WebSocket WebSocket是HTML5 开始提供的一种在单个TCP连接上进行全双工通讯的协议.什么是全双工?就是在同一时间可以发送和接收消息,实现双向通信,比如打电话.WebSocke ...

最新文章

  1. ubuntu开启ssh
  2. Arraylist理解(2)扩容
  3. FineReport的JS编辑框和URL地址栏语法简介
  4. 【图论】Kruskal算法求最小生成树详解
  5. SHIFT-JIS编码范围
  6. 设计模式学习笔记-装饰模式
  7. linux 如何重建mbr,重建mbr要不要勾选
  8. bluetoothctl No default controller available
  9. 5D论文PMF及改进
  10. [Vue warn]: The client-side rendered virtual DOM tree is not matching server-rendered content.
  11. 一个假猪套神器:NET CAT-NC
  12. acwing349 黑暗城堡 ——最短路径生成树
  13. 数字图像处理报告:实验3 同态滤波、频域滤波、傅里叶变换性质、DCT变换性质
  14. python 通达信板块_通达信如何自定义选股,使用python在通达信里面选股
  15. Go 使用for range time.Tick() 设置定时器
  16. 大学临近结束回望高中
  17. 元宇宙只是未来技术演化的外衣
  18. 打通apk到hal层
  19. QIIME 2 2020.11发布啦
  20. USB扫码枪二维码读取(一)——U3D篇

热门文章

  1. Java面向对象(12)--对象类型转换 (Casting )
  2. 【强化学习】可视化学习tensorboard
  3. oracle sysnonym,Oracle权限
  4. 想办法解决window刷新的问题
  5. 前端:jQuery笔记
  6. 2015.7.11js-10(无缝滚动)
  7. 消息队列mysql redis那个好_Redis与RabbitMQ作为消息队列的比较
  8. 米线店结账程序 装饰着模式_实验报告2_装饰者模式
  9. python 消息队列 get是从队首还是队尾取东西_python分布式爬虫中消息队列知识点详解...
  10. redhat/centos 搭建svn服务器环境