Ich versuche websockets auch mit node-http-proxy
zu arbeiten. Der Unterschied ist, dass ich eine Proxytabelle verwende:
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)
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:
(Sie können alte Versionen von npm-Modulen installieren, indem Sie npm install [email protected]
ausführen.)
Tags und Links javascript node.js websocket node-http-proxy