资讯专栏INFORMATION COLUMN

vue+koa2即时聊天,实时推送比特币价格,爬取电影网站

xietao3 / 356人阅读

摘要:技术栈自动化部署图灵机器人打包,同步,服务器上传一个命令全搞定功能清单登陆注册获取聊天记录包含前端分页优化发送文字,表情,文件消息创建群组,添加群组,群组搜索修改个人信息,群组信息图片裁剪压缩上传私聊图灵机器人接入定时任务爬取电影和等数字

技术栈

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 = config

router.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: "",
  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 = io

  console.log("挂载中间件...")
  useMiddlewares(app)

  console.log("初始化定时任务...")
  // 多了进行一下封装?
  require("./tools/crawlMovie")
  require("./tools/crawlCoin")

  server.listen(config.server.PORT, () => {
    console.log("正在监听" + config.server.PORT + "端口...")
  })

})()
贴上git地址欢迎给个star 部分运行截图









文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94788.html

相关文章

  • vue+koa2即时聊天实时推送比特价格爬取电影网站

    摘要:技术栈自动化部署图灵机器人打包,同步,服务器上传一个命令全搞定功能清单登陆注册获取聊天记录包含前端分页优化发送文字,表情,文件消息创建群组,添加群组,群组搜索修改个人信息,群组信息图片裁剪压缩上传私聊图灵机器人接入定时任务爬取电影和等数字 技术栈 vue+vuex+vue-router+socket.io+koa2+mongodb+pm2自动化部署+图灵机器人+[npm script打...

    asoren 评论0 收藏0
  • koa2开发微信公众号: 不定期推送最新圈消息

    摘要:背景比特币说好的分叉最后却分叉不成,如今算力又不够,于是比特现金想篡位没一个星期就涨了快倍,错过这趟快车甚是后悔,于是打算写一个可不定期推送最新消息的微信公众号。既然是利用微信这个平台载体,当然要熟悉微信的,遂封装了一下。 背景:比特币说好的segwit2x分叉最后却分叉不成,如今算力又不够,于是比特现金想篡位? 没一个星期就涨了快10倍,错过这趟快车甚是后悔,于是打算写一个可不定期推...

    xi4oh4o 评论0 收藏0
  • TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 的 Bi

    摘要:对于以比特币为首的数字货币近期的表现,只能用疯狂来形容。比特币的成交记录就是事件序列上的加个数据,可以基于过去的成交记录序列来对未来的价格作出预测,和的模型比较合适。最后采用了,用爬取,它包含比特币的个交易记录。 简介 TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人。 文章包括一下几个部分:1.为什么要...

    Mertens 评论0 收藏0
  • 一文彻底读懂 Tether,究竟是神、是妖、还是魔?

    摘要:是全球最大的加密货币交易所之一,一些市场观察人士称,在交易的代币有助于支撑比特币的价格。报告称,在年月日的审计时点上,一家银行以名义开具的账户下拥有美元的款项。截至年月底,波多黎各这类金融机构的现金与总资产的比率迅速攀升至以上。 在追求各种类型「共识」的数字货币世界里,对 Tether 的看法显然很难达成共识,极具争议,也引人瞩目。 在寻找稳定代币的投资者眼中,Tether 如神,是解...

    zhaot 评论0 收藏0
  • PHP和树莓派开发一个比特/以太坊交易机器人

    摘要:注目前我已经扩展了机器人以便能够交易以太坊我希望它能够在不必太多关注的情况下做事,而我想到的第一件事就是为什么不创建一个可以自动进行比特币和以太坊的简单交易机器人。在下一个泡沫破裂的时候自动购买比特币。选择比特币以太坊和欧元美元钱包。 我最近得到了Raspberry Pi Zero Wifi,我告诉你这个东西是改变游戏规则的。我之前使用过RasPis,但由于该设备的占地面积小得多,耗电...

    ShowerSun 评论0 收藏0

发表评论

0条评论

xietao3

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<