2019独角兽企业重金招聘Python工程师标准>>>
安装nodejs的apn
<!-- lang: shell -->
npm install apn
默认安装到了用户目录,要让本机程序找到require的头文件需要设置环境变量
<!-- lang: shell -->
NODE_PATH=C:\Users\xxx\node_modules
性能测试
对同一个token,相同消息,循环调用函数
<!-- lang: js -->
service.pushNotification(note, tokens);
10000次所消耗时间为100ms左右。 当然了,nodejs的必杀技就是异步的嘛,所以发送速度很快。 最大连接数分别设为1、10、100。以开始发送起,到最后一次触发发送成功回调函数位置。所消耗的时间分别为:15s、12.4s、9s。后来反复测试发现基本都在10s到17s之间波动。而且与最大连接数无关。可见apn的性能大约在600-1100qps。 当最大连接数设置为100时,通过
<!-- lang: shell -->
netstat -ano | find "2195"
发现其连接数只有1。参数“maxConnections”根本没有起作用。 查看源代码文件connection.js 在函数 Connection.prototype.serviceBuffer = function() 中:
<!-- lang: js -->
//从sockets数组取一个socket
if (socket !== null)
...// 发送消息
else if (!this.initialisingConnection() && this.sockets.length < this.options.maxConnections)this.createConnection(); // 创建新连接
只有当没有有效的socket可用时才会创建新的连接。测试中只对一个token循环发送,可能使得socket根本就不忙。这一个连接的socket一直都有效,所以就没有建立其他的连接。可以在高并发、同一个信息发送多个token再测试一下。