2016-08-03 18 views
0

Ein weiteres Update:Probleme mit Socket.IO mit Chrome und Firefox

Das Problem tritt auf, wenn auf localhost als auch ausgeführt wird. Da ich das Problem aus dem Proxy-Server kommt herausgefunden, hier sein Code:

var serverBouncer = bouncy(function(req, res, bounce) { 
    var path = req.url; 
    var url = req.headers.host; 
    if (typeof url !== "string") 
     return; 
    var urlArray = url.split('.'); 
    var bouncePort = port; 
    if (!isNaN(urlArray[0])) 
     bouncePort = parseInt(urlArray[0]); 
    else if (String(urlArray[0]).toLowerCase() === "www" && !isNaN(urlArray[1])) 
     bouncePort = parseInt(urlArray[1]); 
    bounce(bouncePort); 
}); 
serverBouncer.listen(80); 

Update:

Ich fand, wo das Problem herkommt !!! Aber ich muss immer noch die Lösung finden ... Es scheint Probleme mit der Verwendung neueren Versionen von Socket.io (> = 1.0) mit einem Proxy-Server (in meinem Fall bouncy).


ich vor kurzem Socket.IO von v0.9.16 auf v1.4.5 aktualisiert, sowie das Hinzufügen Express in den Mix. Allerdings kann ich jetzt in Chrome und Firefox nicht mehrere Tabs (Anzahl scheint zu variieren) öffnen, ohne merkwürdige Probleme zu haben (Edge ist die einzige, die gut funktioniert). Es hängt entweder, oder lädt teilweise HTML und andere Ressourcen, bevor es hängt.

Nach einer Wartezeit, habe ich oft den Fehler: fehlgeschlagen Ressource laden: der Server mit dem Status 400 (Bad Request) reagierte

Wenn ich eine der Registerkarte schließen, die hängen hat worden, es in dem anderen deblockiert Tabs, die auch hängen.

Die Probleme waren nicht vorhanden, bevor die oben aufgeführten Änderungen durchgeführt wurden.

Ich habe für 2 ganze Tage Forschung und gerade jetzt beschlossen, dies zu posten, da ich weiß, dass es sehr vage ist und ich wahrscheinlich nicht genug Informationen bereitstellen werde. So sehr ich es auch wollte, es würde sehr lange dauern, sich an alles zu erinnern und aufzulisten, was ich in dieser Zeit versucht habe.

Verwenden von Windows 10 mit Chrome v51.0.2704.103, Firefox v43.0.1. Der Server (CentOS) wird unter Verwendung von Knoten mit V6.2.2 hauptsächlich die folgenden Module:

Hier einiger relevanter Servercode:

var port = 8502;  
var socketio = require('socket.io'); 
var express = require("express"); 
var http = require('http'); 
var app = express(); 
var server = http.createServer(app); 
var io = socketio.listen(server); 

server.listen(port); 

app.get('/', function(req, res, next) { 
    //Returning index.html 
}); 

io.on("connection", function(socket) { 
    //Some events... 
}); 

Hier ist ein wenig von dem Client-Code:

var client = io.connect(); 

client.on('connect', function() { 
    //Some events 
}) 
+0

Könnte nicht verwandt sein, aber ich sehe das ziemlich konsequent, ich glaube nicht, sollten Sie 'connect' auf der Clientseite anrufen.Die Methode, um sich mit dem Server zu verbinden, sollte 'var client = io();' sein – pay

+0

Haben Sie mit dem minimalen Code, den Sie gepostet haben, versucht? Das wird helfen, das Problem zu isolieren. – mscdex

+0

@pay Ich habe mit den Ereignissen innerhalb der "connect" und außerhalb davon versucht. Das Problem wird nicht gelöst. –

Antwort

0

Ihre Bindung, bevor der Server hören ist, versuchen Sie so etwas wie dieses

var app = express(); 
server = app.listen(PORT, function() { 
    console.log('Example app listening on port ' + PORT + '!'); 
}); 

io.listen(server); 
+0

Es ändert nichts. Der Server läuft in beiden Richtungen gut. –

Verwandte Themen