UNPKG

5.4 kBMarkdownView Raw
1# 更新日志
2
32017.5.11
4 1、新增WebSocket接口
5 2、引入服务器之间RPC机制
6 3、添加后台管理界面
7
82017.5.12
9 1、完善注册判断,避免混服现象
10
112017.5.14
12 服务端框架扩展:
13 1、整合短连、长连的路由和报文解析
14 2、封装RPC调用机制
15 3、完善后台管理平台的功能
16
172017.5.26: events目录下放置 Logic Server 内部使用的消息句柄文件,对应的消息类型为消息句柄文件的局部路径拼接字符串(从events开始)
18 例如:
19 user/afterLogin.js输出 handle 函数,作为对"user.afterLogin"消息的处理句柄
20 socket/userKick.js输出 handle 函数,作为对"socket.userKick"消息的处理句柄
21
22 注:理论上目录可以无穷嵌套,但必须能准确表达消息的合理分类
23 注:句柄文件中的this指针由外部注入,指向Facade门面对象
24
252017.5.58:
26 1、新增关卡管理系统
27 2、新增体力值
28 3、新增家族系统
29
302017.5.30:
31 1、新增回头率统计数据
32 2、新增注册、消费、在线统计数据
33
34@note:Sequelize模型中,默认必须存在id字段作为Primary key,如果无此字段会造成插入异常
35
362017.6.29:
37 1、新增分段积分系统
38 2、新增新手引导管理系统
39
402017.6.30:
41 1、普查所有await语句,添加try结构,预防未处理的reject导致系统异常
42 2、核查内部RPC机制,避免内部通讯异常导致的功能失灵
43
442017.7.2:
45 1、好友在线状态显示问题:用户上线时看到的好友在线状态都是离线,要等到好友重新上线后才会更新为在线
46 2、头像图片服务器偶尔报异常:使用Request取代了原先的Promise模式
47 3、好友列表分数为0
48 4、好友中出现自己
49 5、好友排行中重复出现
50 6、好友界面头像可能没有
51
522017.7.12:
53 mysql>show variables like 'max_connections'; (查可以看当前的最大连接数)
54 msyql>set global max_connections=1000; (设置最大连接数为1000,可以再次查看是否设置成功)
55 npm list 检查下依赖关系,对缺失的包手工安装下。
56
572017.8.13:
58 1、新增CLI应用,可以向运行中的程序发布实时指令,例如:关闭Socket接口、强制保存用户数据,最后关闭进程
59
602017.8.26 Redis客户端整改方案:
61 1、找出数据更新不及时、失败的深层原因,了解Node-Redis的断线重连机制
62 2、对Redis常用功能进一步封装,包括哈希、集合、KV,以及游标操作
63 3、应对Node异步操作可能带来的数据同步问题
64
652017.12.2
66 1、对框架进行封装,重新划分目录,更好的区隔框架代码和用户自定义代码
67
682017.12.4
69 准备采用React,重构配套的管理后台框架
70 nightmare e2e mock
71
722017.12.27
73 openssl genrsa 1024 > key.pem
74 openssl req -x509 -new -key key.pem > key-cert.pem
75
76 Linux 下的工具们通常使用 base64 编码的文本格式,相关常用后缀如下:
77 * .key:私钥
78 * .csr: 证书请求, CA签名后成为证书
79 * .crt, .pem:证书
80 * der - 二进制编码格式
81 * pem - base64编码格式
82
83 在生成证书的过程中真正要填的是Common Name,通常填写服务器域名或服务器IP地址
84
852017.12.28
86
871、使用 node-http-proxy 实现反向代理
88 安装:
89```bash
90 npm install http-proxy
91```
922、代码示例:
93```javascript
94var http = require('http'), httpProxy = require('http-proxy');
95
96// 新建一个代理 Proxy Server 对象
97var proxy = httpProxy.createProxyServer({});
98
99// 捕获异常
100proxy.on('error', function (err, req, res) {
101 res.writeHead(500, {
102 'Content-Type': 'text/plain'
103 });
104 res.end('Something went wrong. And we are reporting a custom error message.');
105});
106
107// 另外新建一个 HTTP 80 端口的服务器,也就是常规 Node 创建 HTTP 服务器的方法。
108// 在每次请求中,调用 proxy.web(req, res config) 方法进行请求分发
109var server = require('http').createServer(function(req, res) {
110 // 在这里可以自定义你的路由分发
111 var host = req.headers.host, ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
112 console.log("client ip:" + ip + ", host:" + host);
113
114 switch(host){
115 case 'aaaa.com':
116 proxy.web(req, res, { target: 'http://127.0.0.1:81' });
117 break;
118
119 case 'ddd.com':
120 if(req.url.indexOf('/news') != -1){
121 res.writeHead(302, {
122 'Location': 'http://127.0.0.1:82/news/'
123 });
124 res.end();
125 }else{
126 proxy.web(req, res, { target: 'http://127.0.0.1:83' });
127 }
128 break;
129
130 default:
131 res.writeHead(200, {
132 'Content-Type': 'text/plain'
133 });
134 res.end('Welcome to my server!');
135 break;
136 }
137});
138
139console.log("listening on port 80")
140server.listen(80);
141```
142
143#2018-01-28
144如果在两个模块中相互引入对方,则极有可能导致引入异常,比如引入的类变为 {} 这样的结构,这可能是编译器为了避免更为严重的后果(例如死循环)而做的设定。