UNPKG

gamecloud

Version:
145 lines (115 loc) 5.4 kB
# 更新日志 2017.5.11 1、新增WebSocket接口 2、引入服务器之间RPC机制 3、添加后台管理界面 2017.5.12 1、完善注册判断,避免混服现象 2017.5.14 服务端框架扩展: 1、整合短连、长连的路由和报文解析 2、封装RPC调用机制 3、完善后台管理平台的功能 2017.5.26: events目录下放置 Logic Server 内部使用的消息句柄文件,对应的消息类型为消息句柄文件的局部路径拼接字符串(从events开始) 例如: user/afterLogin.js输出 handle 函数,作为对"user.afterLogin"消息的处理句柄 socket/userKick.js输出 handle 函数,作为对"socket.userKick"消息的处理句柄 注:理论上目录可以无穷嵌套,但必须能准确表达消息的合理分类 注:句柄文件中的this指针由外部注入,指向Facade门面对象 2017.5.58: 1、新增关卡管理系统 2、新增体力值 3、新增家族系统 2017.5.30: 1、新增回头率统计数据 2、新增注册、消费、在线统计数据 @note:Sequelize模型中,默认必须存在id字段作为Primary key,如果无此字段会造成插入异常 2017.6.29: 1、新增分段积分系统 2、新增新手引导管理系统 2017.6.30: 1、普查所有await语句,添加try结构,预防未处理的reject导致系统异常 2、核查内部RPC机制,避免内部通讯异常导致的功能失灵 2017.7.21、好友在线状态显示问题:用户上线时看到的好友在线状态都是离线,要等到好友重新上线后才会更新为在线 2、头像图片服务器偶尔报异常:使用Request取代了原先的Promise模式 3、好友列表分数为0 4、好友中出现自己 5、好友排行中重复出现 6、好友界面头像可能没有 2017.7.12: mysql>show variables like 'max_connections'; (查可以看当前的最大连接数) msyql>set global max_connections=1000; (设置最大连接数为1000,可以再次查看是否设置成功) npm list 检查下依赖关系,对缺失的包手工安装下。 2017.8.13: 1、新增CLI应用,可以向运行中的程序发布实时指令,例如:关闭Socket接口、强制保存用户数据,最后关闭进程 2017.8.26 Redis客户端整改方案: 1、找出数据更新不及时、失败的深层原因,了解Node-Redis的断线重连机制 2、对Redis常用功能进一步封装,包括哈希、集合、KV,以及游标操作 3、应对Node异步操作可能带来的数据同步问题 2017.12.2 1、对框架进行封装,重新划分目录,更好的区隔框架代码和用户自定义代码 2017.12.4 准备采用React,重构配套的管理后台框架 nightmare e2e mock 2017.12.27 openssl genrsa 1024 > key.pem openssl req -x509 -new -key key.pem > key-cert.pem Linux 下的工具们通常使用 base64 编码的文本格式,相关常用后缀如下: * .key:私钥 * .csr: 证书请求, CA签名后成为证书 * .crt, .pem:证书 * der - 二进制编码格式 * pem - base64编码格式 在生成证书的过程中真正要填的是Common Name,通常填写服务器域名或服务器IP地址 2017.12.28 1、使用 node-http-proxy 实现反向代理 安装: ```bash npm install http-proxy ``` 2、代码示例: ```javascript var http = require('http'), httpProxy = require('http-proxy'); // 新建一个代理 Proxy Server 对象 var proxy = httpProxy.createProxyServer({}); // 捕获异常 proxy.on('error', function (err, req, res) { res.writeHead(500, { 'Content-Type': 'text/plain' }); res.end('Something went wrong. And we are reporting a custom error message.'); }); // 另外新建一个 HTTP 80 端口的服务器,也就是常规 Node 创建 HTTP 服务器的方法。 // 在每次请求中,调用 proxy.web(req, res config) 方法进行请求分发 var server = require('http').createServer(function(req, res) { // 在这里可以自定义你的路由分发 var host = req.headers.host, ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; console.log("client ip:" + ip + ", host:" + host); switch(host){ case 'aaaa.com': proxy.web(req, res, { target: 'http://127.0.0.1:81' }); break; case 'ddd.com': if(req.url.indexOf('/news') != -1){ res.writeHead(302, { 'Location': 'http://127.0.0.1:82/news/' }); res.end(); }else{ proxy.web(req, res, { target: 'http://127.0.0.1:83' }); } break; default: res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Welcome to my server!'); break; } }); console.log("listening on port 80") server.listen(80); ``` #2018-01-28 如果在两个模块中相互引入对方,则极有可能导致引入异常,比如引入的类变为 {} 这样的结构,这可能是编译器为了避免更为严重的后果(例如死循环)而做的设定。