2015-12-15 9 views
8

Ich bin mit Compute Engine (GCE) meinem Socket-Server mit Socket.IO (Node.js)zulassen WebSockets in Google Compute Engine (GCE)

Es ist nur mit Polling Arbeit auszuführen. Wenn ich versuche, einen Web-Client zu verwenden, erhalte ich diesen Fehlercode:

WebSocket connection to 'ws://myapp-socket.appspot.com/socket.io/?EIO=3&transport=websocket&sid=Tt4uNFR2fU82zsCIAADo' failed: Unexpected response code: 400 

Was mache ich falsch? Ist es ein GCE-Konfigurationsproblem?

+0

Ich stehe vor einem ähnlichen Problem. Konnten Sie das lösen? –

+0

@NewtonJoshua, Details über infra? Verwenden Sie Nginx? –

+0

@TarunLalwani: Nein. Ich benutze Nginx nicht. Es gibt einen Knotenserver und einen Angular-Client, der socket.io verwendet. –

Antwort

5

Sie können die Domäne myapp-socket.appspot.com in Ihrem Skript nicht verwenden, wenn Sie WebSockets verwenden. Stattdessen müssen Sie die externe IP-Adresse der GCE-Instanz verwenden und direkt eine Verbindung zu dieser herstellen, indem Sie alle Firewall-Ports öffnen, die Sie möglicherweise verwenden.

Ich glaube, dass der Datenverkehr zur appspot.com-Domain auch über Frontend-Webserver läuft und socket.io eine direkte Verbindung zum Server benötigt.

+1

Auch nach der Verwendung der externen IP-Adresse bleibt das Problem bestehen –

+1

Probieren Sie alle Lösungen in bereits vorhandenen [Ausgabe # 1942] (https://github.com/socketio/socket.io/issues/1942) von Socket. io – SACn

1

Die virtuellen Computer in Google Compute Engine haben Port 80 für http und Port 443 für https. Die Verwendung dieser Ports für Web-Sockets löste das Problem.

Verwandte Themen