2015-07-09 3 views
7

Ich habe einen node.js Server und ich benutze socket.io für die Echtzeit-Kommunikation zwischen dem Server und den Clients. Ich habe beobachtet, dass, wenn ein mobiler Client (mit Ionic Framework) plötzlich getrennt wird, ohne den Server darüber zu informieren, die Sockets für Stunden (oder für immer) am Leben sind. Ich habe gelesen und schaute auf ihre Dokumentation und sie haben Optionen wie pingInterval, pingtimeout, heartbeat interval, heartbeat timeout, close timeout.Konfigurieren der Heartbeat Timeout, Heartbeat Intervall und schließen Timeout auf Server

Wie konfiguriere ich diese Werte auf meinem Server?

Welcher dieser Werte ist veraltet?

Hier ist mein Code.

var express = require('express'); 
var app = express(); 
var server = require('http').createServer(app); 
var io = require('socket.io').listen(server); 
io.set('heartbeat interval', 5000); 
io.set('heartbeat timeout', 8000); 
io.set('timeout', 5000); 
io.on('connection', function(socket){...} 

Keine dieser scheint zu funktionieren. Jede Hilfe oder Anleitung wird sehr geschätzt.

PS: Ich bin Steckdosen meiner Sammlung Spleißen, wenn ein Client trennt und es funktioniert gut, wenn Kunden-Server sagen, dass sie ordnungsgemäß zu trennen möchten.

Antwort

1

Sie haben pingTimeout zu verwenden, wie hier erwähnt: https://github.com/Automattic/socket.io/issues/1900

Auch stellen Sie sicher, dass Ihre Optionen wie die folgenden setzen, da io.set verschwunden ist.

var io = require('socket.io')({ pingTimeout: 5000 })

Mehr auf: http://socket.io/docs/migrating-from-0-9/#configuration-differences

Wenn dies jedoch nicht funktioniert, stehen die Chancen ionische sind hält tatsächlich die Verbindung im Hintergrund. Von einem Projekt vor etwa einem Jahr erinnerte ich mich daran, mehrere Probleme wie dieses zu haben und endete damit, ionische Trennsockel mit Gewalt zu machen, als es im Hintergrund lief.

+0

Was ist mit 'pingInterval'? –

+0

Wie die Dokumentation sagt, "pingInterval (Anzahl): wie viele ms vor dem Senden eines neuen Ping-Pakets (25000)". Ich denke nicht, dass es in Ihrem Fall relevant ist. –

Verwandte Themen