一个即时通讯系统: IM
技术栈: Gin + Websocket + MongoDB
扩展安装
1 2 3 4 5 go get -u github.com/gin-gonic/gin go get github.com/gorilla/websocket go get go.mongodb.org/mongo-driver/mongo go get -u github.com/golang-jwt/jwt/v5 go get github.com/satori/go.uuid
数据库安装&&启动
1 2 3 4 5 6 7 8 9 10 11 12 sudo docker pull mongo # 启动 sudo docker run --restart=always --name mongo \ -p 27017:27017 \ -e TZ=Asia/Shanghai \ -v /data/mongo/data:/data/db \ -v /data/mongo/log:/data/log \ --privileged=true \ -e MONGO_INITDB_ROOT_USERNAME=mongo \ -e MONGO_INITDB_ROOT_PASSWORD=mongo \ -d mongo
数据库用法,新建集合
集合列表
用户集合
1 2 3 4 5 6 7 8 9 10 { "account" : "账号" , "password" : "密码" , "nickname" : "昵称" , "sex" : 1 , "email" : "邮箱" , "avatar" : "头像" , "created_at" : 1 , "updated_at" : 1 , }
消息集合
1 2 3 4 5 6 7 { "user_identity" : "用户的唯一标识" , "room_identity" : "房间的唯一标识" , "data" : "发送的数据" , "created_at" : 1 , "updated_at" : 1 , }
房间集合
1 2 3 4 5 6 7 8 { "number" : "房间号" , "name" : "房间名称" , "info" : "房间简介" , "user_identity" : "房间创建者的唯一标识" , "created_at" : 1 , "updated_at" : 1 , }
用户房间关联集合
1 2 3 4 5 6 7 { "user_identity" : "用户的唯一标识" , "room_identity" : "房间的唯一标识" , "message_identity" : "消息的唯一标识" , "created_at" : 1 , "updated_at" : 1 , }
docker安装并且使用redis
1 2 3 4 5 6 7 docker pull redis mkdir -p /home/redis/conftouch /home/redis/conf/redis.conf
启动容器
1 2 3 4 5 docker run --name redis -p 6379:6379 \ -v /home/redis/data:/data \ -v /home/redis/conf/redis.conf:/etc/redis/redis.conf \ -d redis redis-server /etc/redis/redis.conf
进入容器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 docker exec -it redis /bin/bash docker exec -it redis bash redis-cli > set name bella > get name docker exec -it redis redis-cli redis-cli -h 127.0.0.1 -p 6379 -a 123456