WebSocket-Verbindung fehlgeschlagen: Ein oder mehrere reservierte bits sind auf: reserved1 = 0, reserviert2 = 1, reserved3 = 1

Ich bin versucht, setup-WebSockets in meinem Javascript (Reagieren) Anwendung mit Socket.io.

Bei der Verwendung der polling transport aus der Steckdose.io-client (v1.4.5), alles funktioniert einwandfrei.
Aber ich möchte nutzen Sie aktuelle und sichere WebSockets (wss:// Protokoll)…

Mein server ist ein Debian 7 mit Nginx v1.2.1 als proxy-Server für meine virtuelle hosts, und meine Node.js app (mit Sockel.io v1.4.5).

Mein domain-name (api.tribeez.net) eingerichtet ist, über CloudFlare, die angekündigt voll WebSocket Unterstützung (auch über SSL, d.h. wss://).

Wenn ich meine app in Chrome (v50.0), sehe ich die WebSocket-Verbindung in das Netzwerk-panel von Chrome (status pending).
Aber nach einer minute, die WebSocket-Verbindung trennt (status 101 Switching Protocols) und die Konsole wirft mir einen verwirrend WebSocket connection to 'wss://api.tribeez.net/socket.io/?EIO=3&transport=websocket&t=LI3t1dh' failed: One or more reserved bits are on: reserved1 = 0, reserved2 = 1, reserved3 = 1

Beim einschalten sockel.io-debugging, dies ist, was ich bekomme:

Fri, 06 May 2016 02:23:37 GMT socket.io:server incoming connection with id L43EOXmwsqkgCMVJAAAD
Fri, 06 May 2016 02:23:37 GMT socket.io:client connecting to namespace /
Fri, 06 May 2016 02:23:37 GMT socket.io:namespace adding socket to nsp /
Fri, 06 May 2016 02:23:37 GMT socket.io:socket socket connected - writing packet
Fri, 06 May 2016 02:23:37 GMT socket.io:socket joining room /#L43EOXmwsqkgCMVJAAAD
Fri, 06 May 2016 02:23:37 GMT socket.io:client writing packet {"type":0,"nsp":"/"}
Fri, 06 May 2016 02:23:37 GMT socket.io-parser encoding packet {"type":0,"nsp":"/"}
Fri, 06 May 2016 02:23:37 GMT socket.io-parser encoded {"type":0,"nsp":"/"} as 0
Transport=websocket, query=/socket.io/?EIO=3&transport=websocket&t=LI3t1dh
Fri, 06 May 2016 02:23:37 GMT socket.io:socket joined room /#L43EOXmwsqkgCMVJAAAD
Fri, 06 May 2016 02:23:37 GMT socket.io:socket joining room tribe#1
Fri, 06 May 2016 02:23:37 GMT socket.io:socket joined room tribe#1
Fri, 06 May 2016 02:24:37 GMT socket.io:client client close with reason transport close
Fri, 06 May 2016 02:24:37 GMT socket.io:socket closing socket - reason transport close

– Und dies ist der Nginx log:

2016/05/06 04:24:37 [error] 28383#0: *549 upstream timed out (110: Connection timed out) while reading upstream, client: xxx.xxx.xxx.xxx, server: api.tribeez.net, request: "GET /socket.io/?EIO=3&transport=websocket&t=LI3t1dh HTTP/1.1", upstream: "http://127.0.0.1:3010/socket.io/?EIO=3&transport=websocket&t=LI3t1dh", host: "api.tribeez.net"

Und meine Nginx-conf für diese app:

http {
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
}

server {
    server_name api.tribeez.net;
    location /{
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:3010;
    }
    location /socket.io/{
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:3010;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

Jede Idee, warum es geschlossen wird? Könnte es sein, dass ich brauchen, um es ping regelmäßig?

InformationsquelleAutor antoine129 | 2016-05-06



One Reply
  1. 1

    Fand die Antwort am Ende ein Nginx Beitrag: ich brauchte, um ein upgrade für meine Nginx-version auf eine 1.3.13+. Ich habe die 1.10 installiert (Letzte stabile) mit der rechten Nginx Debian-repository (siehe Anleitung), die das Problem beseitigt haben.

    Hier ist mein browser die Ausgabe nach der Einstellung localStorage.debug = '*':

    socket.io-client:url parse https://api.tribeez.net +0ms
    socket.io-client new io instance for https://api.tribeez.net +5ms
    socket.io-client:manager readyState closed +2ms
    socket.io-client:manager opening https://api.tribeez.net +1ms
    engine.io-client:socket creating transport "polling" +2ms
    engine.io-client:polling polling +2ms
    engine.io-client:polling-xhr xhr poll +1ms
    engine.io-client:polling-xhr xhr open GET: https://api.tribeez.net/socket.io/?EIO=3&transport=polling&t=LI4PaE9 +2ms
    engine.io-client:polling-xhr xhr data null +2ms
    engine.io-client:socket setting transport polling +1ms
    socket.io-client:manager connect attempt will timeout after 20000 +3ms
    socket.io-client:manager readyState opening +3ms
    engine.io-client:polling polling got data ArrayBuffer +468ms
    engine.io-client:socket socket receive: type "open", data "{"sid":"0BCyhfQm--8uOQYUAAAb","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}" +5ms
    engine.io-client:socket socket open +1ms
    socket.io-client:manager open +0ms
    socket.io-client:manager cleanup +1ms
    socket.io-client:socket transport is open - connecting +0ms
    engine.io-client:socket starting upgrade probes +1ms
    engine.io-client:socket probing transport "websocket" +1ms
    engine.io-client:socket creating transport "websocket" +0ms
    engine.io-client:polling polling +2ms
    engine.io-client:polling-xhr xhr poll +0ms
    engine.io-client:polling-xhr xhr open GET: https://api.tribeez.net/socket.io/?EIO=3&transport=polling&t=LI4PaLo&sid=0BCyhfQm--8uOQYUAAAb +1ms
    engine.io-client:polling-xhr xhr data null +0ms
    engine.io-client:polling polling got data ArrayBuffer +252ms
    engine.io-client:socket socket receive: type "message", data "0" +1ms
    socket.io-parser decoded 0 as {"type":0,"nsp":"/"} +0ms
    engine.io-client:polling polling +2ms
    engine.io-client:polling-xhr xhr poll +0ms
    engine.io-client:polling-xhr xhr open GET: https://api.tribeez.net/socket.io/?EIO=3&transport=polling&t=LI4PaPo&sid=0BCyhfQm--8uOQYUAAAb +0ms
    engine.io-client:polling-xhr xhr data null +1ms
    engine.io-client:socket probe transport "websocket" opened +441ms
    engine.io-client:socket probe transport "websocket" pong +252ms
    engine.io-client:socket pausing current transport "polling" +1ms
    engine.io-client:polling we are currently polling - waiting to pause +1ms
    engine.io-client:polling polling got data ArrayBuffer +98ms
    engine.io-client:socket socket receive: type "noop", data "undefined" +1ms
    engine.io-client:polling pre-pause polling complete +0ms
    engine.io-client:polling paused +1ms
    engine.io-client:socket changing transport and sending upgrade packet +0ms
    engine.io-client:socket setting transport websocket +0ms
    engine.io-client:socket clearing existing transport polling +1ms
    engine.io-client:polling ignoring poll - transport state "paused" +0ms

    Buchse.io scheint sich zu öffnen, eine polling-Verbindung trotzdem, aber hält es zu bevorzugen, die das websocket-sobald letztere arbeitet (nehme ich mal an…)

    • Ich bin vor Ihr genau das gleiche problem, aber ich habe nicht nginx. Meine socketio-client, bedient wird aus meiner socketio-server. Könnte es sein, verschiedene client/server-Versionen…?
    • Keine Ahnung… vielleicht post eine neue Frage mit den details? Ich persönlich habe nicht genug wissen, um Ihnen zu helfen…
    • Oh, keine Sorge, habe ich eine andere Frage und es war das antivirus. Es war die Blockierung websockets-verbindungen -_-

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.