Frage Was macht "xhr-polling" config in socket.io?


Ich habe einen node.js Server mit socket.io:

var io = require('socket.io').listen(app);

// assuming io is the Socket.IO server object
io.configure(function () { 
      io.set("transports", ["xhr-polling"]); 
      io.set("polling duration", 10); 
    });

io.sockets.on('connection', function(socket){
  console.log('connected: %s', socket.id);
  ...
}

Mit xhr-polling und einer Abrufdauer von 10 Sekunden bedeutet dies, dass eine neue Verbindung alle 10 Sekunden aufgerufen wird? Wenn ja, wie kann ich die Benutzer verfolgen, wenn sie die Verbindung unterbrechen? Ich betreibe node.js auf Heroku.


10
2018-02-11 21:29


Ursprung


Antworten:


xhr-polling bedeutet, dass Ihr Server 10 Sekunden lang auf jedes GET von POST wartet, dass er keine Antwort hat, bevor er antwortet, anstatt eine leere Antwort zurückzusenden. Wenn Ihr Server also nach 10 Sekunden keine Informationen zurückgibt, antwortet er mit einer leeren Antwort. Sie können hier mehr lesen: Lange Umfragen

Ich persönlich benutze xhr-polling als Ausweichmöglichkeit von WebSockets in einer Anwendung auf nodejitsu (ein anderer Knoten, der wie Heroku hostet) und es funktioniert gut. Die einzige Sache ist das Ereignis "on connection", das etwa 3-8 Sekunden dauert, anstatt sofort wie bei meiner WebSocket-Anwendung.

Es gibt keine neue Verbindung, die bei jedem neuen Abruf erstellt wird, es ist nur eine Möglichkeit, dass nur alle 10 Sekunden ein GET oder POST an den Server gesendet wird, anstatt den Server alle 0,5 Sekunden abfragen zu müssen, um ein "echtes" Zeit "Anwendung. Wenn der Server in weniger als 10 Sekunden antwortet, wird eine weitere Abfrage gesendet, um die nächste Antwort vorzubereiten.

Ich hoffe, dies wird dir helfen. Haben Sie einen guten Tag.


15
2017-08-08 15:10



socket.io verbindet Clients automatisch neu.


3
2018-05-28 22:40