Node http Proxy mit Proxytable und Websockets

8

Ich versuche websockets auch mit node-http-proxy zu arbeiten. Der Unterschied ist, dass ich eine Proxytabelle verwende:

%Vor%

Ich habe es versucht:

%Vor%

Aber es scheint nicht zu funktionieren. Eine kurze Überprüfung, um zu sehen, ob websockets funktionieren, zeige ich Unexpected response code: 400 von Chrome (funktioniert gut, wenn ich direkt gehe)

Auch ein paar Überprüfungen machen server.on('upgrade',.. feuert nicht auf eine Websocket-Anfrage

Wie kann ich meinen Proxyserver dazu bringen, Websockets korrekt zu routen?

Ich habe das auch an Knoten 0.8.23 sowie an Knoten 0.10.x versucht (die späteren Versionen von Node haben ein Speicherleck-Problem, funktionieren aber auch nicht mit 0.8.23)

    
Akshat 12.05.2013, 01:34
quelle

1 Antwort

2

Wenn Sie httpProxy.createServer() verwenden, müssen Sie das Ereignis upgrade nicht verarbeiten, da es vom HTTP-Proxy automatisch verarbeitet wird. Daher wird Ihr server.on('upgrade', ...) nie ausgelöst, da der HTTP-Proxy es bereits intern verarbeitet.

Sie müssen server.on('upgrade') nur ausführen, wenn Sie Middlewarefunktionen an httpProxy.createServer übergeben oder wenn Sie den Server manuell mit http.createServer() erstellt haben.

Mit anderen Worten, websockets sollten "nur" durch den Proxy in Ihrer Konfiguration funktionieren.

Die WebSocket-Unterstützung im http-Proxy ist jedoch derzeit defekt auf Knoten v0.10.x wegen Streams2 (die Stream-APIs im Knoten wurden komplett in 0.10 umgeschrieben ). Auch ist die neueste Version von http-proxy (0.10.2) im Knoten v0.8 wegen eines verpfuschte Lösung für das streams2-Problem.

Sie haben also zwei Möglichkeiten:

  1. Warten Sie, bis http-proxy seine Interna neu schreibt, um mit Streams2 fertig zu werden.
  2. Downgrade auf Knoten v0.8.23 und http-proxy 0.10.1. (Mindestens bis # 1 passiert.)

(Sie können alte Versionen von npm-Modulen installieren, indem Sie npm install [email protected] ausführen.)

    
josh3736 15.05.2013 20:46
quelle