KTV包房喝酒小游戏,用户进入包房打开游戏,房主开始游戏后,系统随即选择一名幸运儿给予随即奖惩
- 在本地安装redis:按照默认安装即可
- 运行
$ git clone https://github.com/zhouzhaoxin/eggdemo.git
$ cd eggdemo
$ npm install
$ npm run dev- 打开三个标签模拟三个用户加入demo包房
请求路径:
浏览器打开标签1: http://127.0.0.1:7008/drink?unionid=a&room=demo
浏览器打开标签2: http://127.0.0.1:7008/drink?unionid=b&room=demo
浏览器打开标签2: http://127.0.0.1:7008/drink?unionid=d&room=demo
ubuntu 18.04 bionic amd64
/home/apple/learn/egg
如果使用官方提供的方式下载docker-compose过慢, 可以使用下面命令获取docker-compose 地址,然后自己选择其他的方式下载(wget等)
$ echo "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)"
https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64下载完成后的docker-compose可执行文件放到:/usr/local/bin/docker-compose, 再赋予其执行权限即可
sudo chmod +x /usr/local/bin/docker-compose官方docker很慢,配置国内镜像可提高docker使用效率
$ vim /etc/docker/daemon.json
添加并保存
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
]
}
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker$ mkdir -p /home/apple/learn/egg/source
$ mkdir -p /home/apple/learn/egg/server
$ git clone https://github.com/zhouzhaoxin/eggdemo.git /home/apple/learn/egg/source
$ cd /home/apple/learn/egg/source
$ tar -zcvf /home/apple/learn/egg/source/deploy/release.tgz . --exclude=deploy
$ cd deploy
$ make start
服务已经启动,可访问以下url查看效果
127.0.0.1:8090/drink?unionid=a&room=demo
127.0.0.1:8091/drink?unionid=b&room=demo.
├── app
│ ├── controller // 存放所有的html渲染和restful接口
│ │ ├── game // 游戏控制目录
│ │ │ ├── drink.js // 此文件编写小游戏restful接口
│ │ │ └── home.js // 此文件渲染小游戏前端模板
│ │ └── home.js // 此文件渲染p2p前端模板
│ ├── extend
│ │ └── helper.js // 提供socket返回信息结构化转换拓展
│ ├── io // socket.io接口目录
│ │ ├── controller
│ │ │ ├── chat.js // p2p socket接口
│ │ │ └── game
│ │ │ └── drink.js // 小游戏socket接口
│ │ └── middleware // socket 中间件,需要在config.default.js中配置使用
│ │ ├── auth.js // socket 进入房间退出房间中间件
│ │ └── packet.js // 作用于每一个数据包(每一条消息);在生产环境中,通常用于对消息做预处理,又或者是对加密消息的解密等操作
│ ├── middleware // 接口中间件
│ │ ├── drink.js // 小游戏中间件
│ │ └── error_handler.js // 错误处理中间件
│ ├── router.js // 路由文件
│ └── view
│ ├── drink.html // 小游戏
│ ├── home.html // p2p chat
│ └── loading_heart.html // 加载界面
├── app.js // 初始化调用
├── config // 配置文件
│ ├── config.default.js // 默认配置文件
│ └── plugin.js // 插件
├── package.json /
├── package-lock.json
├── readme.md
├── tests // 为了解js使用的测试文件
│ ├── drink.py
│ └── test.js
.
项目实现了p2p聊天室请求路径为/
启动项目后,请求根地址,然后后打开控制台,用下边的命令发送消息
socket.emit('exchange', {
target: 'Dkn3UXSu8_jHvKBmAAHW',
payload: {
msg : 'test',
},
});
请求路径/api/game/drink 未完成,但展示了restful的用法
sudo docker container run -d -p 127.0.0.1:8080:80 --rm --name mynginx nginx$ sudo docker container cp mynginx:/etc/nginx .
# 当前目录会多出一个nginx目录
$ mv nginx conf
$ sudo docker container stop mynginx$ sudo docker container run -d -p 127.0.0.1:8080:80 --rm --name mynginx --volume "$PWD/conf":/etc/nginx nginx
# 此时访问localhost:80可确认安装是否成功
# 关闭nginx可以使用 sudo docker container stop mynginx
$ sudo docker exec mynginx nginx -s reload # 使用此命令重新加载配置文件在对restful请求参数校验时使用的validate的参数需要参考传送门
$ docker-compose --verbose up
$ sudo docker exec -it [container-name] sh