摘要:技術(shù)棧自動(dòng)化部署圖靈機(jī)器人打包,同步,服務(wù)器上傳一個(gè)命令全搞定功能清單登陸注冊(cè)獲取聊天記錄包含前端分頁優(yōu)化發(fā)送文字,表情,文件消息創(chuàng)建群組,添加群組,群組搜索修改個(gè)人信息,群組信息圖片裁剪壓縮上傳私聊圖靈機(jī)器人接入定時(shí)任務(wù)爬取電影和等數(shù)字
技術(shù)棧
vue+vuex+vue-router+socket.io+koa2+mongodb+pm2自動(dòng)化部署+圖靈機(jī)器人+[npm script打包,cdn同步,服務(wù)器上傳一個(gè)命令全搞定]
功能清單登陸注冊(cè)
獲取聊天記錄(包含前端分頁優(yōu)化)
發(fā)送文字,表情,文件消息
創(chuàng)建群組,添加群組,群組搜索
修改個(gè)人信息,群組信息
圖片裁剪壓縮上傳
私聊
圖靈機(jī)器人接入
定時(shí)任務(wù)爬取電影和btc等數(shù)字貨幣的價(jià)格并使用socket.io實(shí)時(shí)推送給所有客戶端
前端一鍵打包同步到七牛cdn并上傳到服務(wù)器的實(shí)現(xiàn)
server端的pm2自動(dòng)部署
效果演示chrome下F12或者手機(jī)掃描下面的二維碼后端的代碼暫時(shí)不開放出來,因?yàn)樯婕暗胶芏鄠€(gè)人的配置數(shù)據(jù),如果實(shí)在需要可以加微信 MSC199312 (需要付費(fèi)0.0!),畢竟這個(gè)小項(xiàng)目斷斷續(xù)續(xù)也做了幾個(gè)星期,也還花了些心思,而且涉及的知識(shí)點(diǎn)也都還是很廣很實(shí)用的,還望理解,其實(shí)主要原因還是窮[淚奔]
部分代碼客戶端 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) { // 如果上級(jí)也未匹配到路由則跳轉(zhuǎn)登錄頁面,如果上級(jí)能匹配到則轉(zhuǎn)上級(jí)路由 from.name ? next({ name: from.name }) : next("/") } else { // 路由切換時(shí)改變頁面標(biāo)題 document.querySelector("title").innerHTML = to.name // 統(tǒng)計(jì)代碼 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("數(shù)據(jù)庫初始化...") 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("初始化定時(shí)任務(wù)...") // 多了進(jìn)行一下封裝? require("./tools/crawlMovie") require("./tools/crawlCoin") server.listen(config.server.PORT, () => { console.log("正在監(jiān)聽" + config.server.PORT + "端口...") }) })()貼上git地址歡迎給個(gè)star 部分運(yùn)行截圖
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/94788.html
摘要:背景比特幣說好的分叉最后卻分叉不成,如今算力又不夠,于是比特現(xiàn)金想篡位沒一個(gè)星期就漲了快倍,錯(cuò)過這趟快車甚是后悔,于是打算寫一個(gè)可不定期推送最新消息的微信公眾號(hào)。既然是利用微信這個(gè)平臺(tái)載體,當(dāng)然要熟悉微信的,遂封裝了一下。 背景:比特幣說好的segwit2x分叉最后卻分叉不成,如今算力又不夠,于是比特現(xiàn)金想篡位? 沒一個(gè)星期就漲了快10倍,錯(cuò)過這趟快車甚是后悔,于是打算寫一個(gè)可不定期推...
摘要:對(duì)于以比特幣為首的數(shù)字貨幣近期的表現(xiàn),只能用瘋狂來形容。比特幣的成交記錄就是事件序列上的加個(gè)數(shù)據(jù),可以基于過去的成交記錄序列來對(duì)未來的價(jià)格作出預(yù)測(cè),和的模型比較合適。最后采用了,用爬取,它包含比特幣的個(gè)交易記錄。 簡(jiǎn)介 TensorFlow-Bitcoin-Robot:一個(gè)基于 TensorFlow LSTM 模型的 Bitcoin 價(jià)格預(yù)測(cè)機(jī)器人。 文章包括一下幾個(gè)部分:1.為什么要...
摘要:是全球最大的加密貨幣交易所之一,一些市場(chǎng)觀察人士稱,在交易的代幣有助于支撐比特幣的價(jià)格。報(bào)告稱,在年月日的審計(jì)時(shí)點(diǎn)上,一家銀行以名義開具的賬戶下?lián)碛忻涝目铐?xiàng)。截至年月底,波多黎各這類金融機(jī)構(gòu)的現(xiàn)金與總資產(chǎn)的比率迅速攀升至以上。 在追求各種類型「共識(shí)」的數(shù)字貨幣世界里,對(duì) Tether 的看法顯然很難達(dá)成共識(shí),極具爭(zhēng)議,也引人矚目。 在尋找穩(wěn)定代幣的投資者眼中,Tether 如神,是解...
摘要:注目前我已經(jīng)擴(kuò)展了機(jī)器人以便能夠交易以太坊我希望它能夠在不必太多關(guān)注的情況下做事,而我想到的第一件事就是為什么不創(chuàng)建一個(gè)可以自動(dòng)進(jìn)行比特幣和以太坊的簡(jiǎn)單交易機(jī)器人。在下一個(gè)泡沫破裂的時(shí)候自動(dòng)購(gòu)買比特幣。選擇比特幣以太坊和歐元美元錢包。 我最近得到了Raspberry Pi Zero Wifi,我告訴你這個(gè)東西是改變游戲規(guī)則的。我之前使用過RasPis,但由于該設(shè)備的占地面積小得多,耗電...
閱讀 1634·2021-11-22 14:45
閱讀 1088·2021-11-17 09:33
閱讀 3334·2021-09-02 09:48
閱讀 979·2019-08-30 15:54
閱讀 2778·2019-08-30 15:53
閱讀 2566·2019-08-30 12:54
閱讀 2253·2019-08-29 12:37
閱讀 2431·2019-08-26 13:58