我有一個socket.io nodejs應用程序(在Windows Azure中)存在問題。它工作正常,但過了一段時間我正在那裏的服務器來回復爲錯誤:Node.js - Socket.io - 「最大併發連接數」問題
HTTP/1.1 503活躍的WebSocket請求數已達到最大併發WebSocket的請求允許
- 我在Windows Azure中的基本計劃,並根據這個職位https://azure.microsoft.com/en-us/blog/introduction-to-websockets-on-windows-azure-web-sites/我可以有350併發連接。
- 我正在使用Windows Azure日誌來計算活動套接字,並且在350個套接字已連接(和斷開連接)的確切點上,服務器將回應該錯誤。
服務器設置:
var client_id = 0;
var connectCounter = 0;
var server = http.createServer(function(req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
console.log('server init.');
}).listen(port);
io = io.listen(server);
io.sockets.on('connection', function(socket)
{
socket.client_id = client_id;
client_id++;
connectCounter++;
console.log('A socket with client_id ' + socket.client_id + ' connected!');
console.log('Sockets counter: ' + connectCounter);
socket.on('disconnect', function() {
console.log('A socket with client_id ' + socket.client_id + ' disconnected!');
connectCounter--;
console.log('Sockets counter: ' + connectCounter);
});
});
實例日誌結尾:
A socket with client_id 349 connected!
Sockets counter: 1
A socket with client_id 350 connected!
Sockets counter: 2
A socket with client_id 349 disconnected!
Sockets counter: 1
A socket with client_id 350 disconnected!
Sockets counter: 0
由於我的插座連接和斷開,不應該有350個併發連接。我做錯了什麼?
看看這個,顯然調用'this.transport.close()'關閉應該在ping超時時被銷燬的TCP套接字:https://github.com/socketio/socket.io/issues/1910 –
也許應該問,你使用PaaS或IaaS?即,您是否完全控制運行nodeJS的虛擬機? –