项目技术栈:VUE、uni-app、nodejs、express框架、websocket

GitHub:http://git@github.com:MSamor/uniapp-Chat

功能:支持文字、语音、表情、本地图片、相机图片发送。

支持消息延迟发送,当一方不在线时,可以发送消息,另一方一旦上线就可以接收到遗漏的消息。

界面展示:

前端:

前端代码见github,太多了,占地方

后端:

//express框架
const express = require("express")
const app = new express()
const cors = require('cors')
app.use(cors())
//文件写入模块
const fs = require("fs")
//body 参数
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({
    extended: false
}))
//文件上传中间件
var multer = require('multer')
var upload = multer({
    dest: 'uploads/'
})
app.use(upload.any())
//socket框架
const WebSocket = require('ws');
const server = new WebSocket.Server({
    port: 8081
});
//公共变量
var hostIp = 'http://localhost:8080/'

let count = 0
let msgArr = []
server.on('connection', function connection(ws) {
    count++
    console.log("当前的人数:", count)
    if (msgArr != [] && count == 2) {
        msgArr.forEach((item) => {
            server.clients.forEach(function each(client) {
                if (client.readyState === WebSocket.OPEN) {
                    client.send(item);
                }
            });
        })
        msgArr = []
    }
    ws.on('message', function incoming(data) {
        if (count < 2) {
            msgArr.push(data)
        } else if (count == 2) {
            server.clients.forEach(function each(client) {
                if (client.readyState === WebSocket.OPEN) {
                    client.send(data);
                }
            });
        }
    });
    //监听链接断开
    ws.on('close', function close() {
        count--
        console.log('disconnected:', count);
    });
});

//静态资源
const path = require('path')
app.use('/uploads', express.static('uploads'))
//整体上传
app.post('/upup', function (req, res) {
    console.log(req.files[0])
    let length = req.files[0].originalname.split('.').length
    let tempPath = req.files[0].filename + '.' + req.files[0].originalname.split('.')[length - 1]
    console.log(tempPath)
    fs.renameSync(req.files[0].path, 'uploads/' + tempPath)
    //修改为当前服务器IP地址
    console.log(hostIp + 'uploads/' + tempPath)
    res.json({
        url: hostIp + 'uploads/' + tempPath
    })
})
//监听端口
app.listen(8080, () =>
    console.log(`http://localhost:8080`)
)

欢迎欢迎~热烈欢迎~