<!-- lang: shell --> npm install apn
默認安裝到了用戶目錄,要讓本機程序找到require的頭文件須要設置環境變量node
<!-- lang: shell --> NODE_PATH=C:\Users\xxx\node_modules
對同一個token,相同消息,循環調用函數shell
<!-- lang: js --> service.pushNotification(note, tokens);
10000次所消耗時間爲100ms左右。 固然了,nodejs的必殺技就是異步的嘛,因此發送速度很快。 最大鏈接數分別設爲一、十、100。以開始發送起,到最後一次觸發發送成功回調函數位置。所消耗的時間分別爲:15s、12.4s、9s。後來反覆測試發現基本都在10s到17s之間波動。並且與最大鏈接數無關。可見apn的性能大約在600-1100qps。 當最大鏈接數設置爲100時,經過npm
<!-- 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再測試一下。併發