peerjs-server icon indicating copy to clipboard operation
peerjs-server copied to clipboard

WebSocket connection to <URL> failed: WebSocket is closed before the connection is established.

Open rexmalebka opened this issue 4 years ago • 1 comments

WebSocket connection to <URL> failed: WebSocket is closed before the connection is established.

I'm trying to use peerjs server using a docker container proxied throught nginx with SSL, but I continue getting this error. WebSocket connection to <URL> failed: WebSocket is closed before the connection is established. image

How could I start debugging this?

  • docker version: Docker version 20.10.10, build b485636
  • peerjs server version: 0.6.1 (got this from docker container)
  • docker command: node bin/peerjs --port 9000 --allow_discovery --proxied 1 --alive_timeout 5000 --path / 
  • nginx version: 1.20.1
  • chrome version: Version 95.0.4638.69 (Official Build) (x86_64)
  • nginx configuration:
map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
}

server {
        server_name peerjs.mysite.cc;

        location / {

                # WebSocket support
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
                proxy_set_header Host $host;

                proxy_set_header Accept-Encoding "";
                proxy_pass http://127.0.0.1:9000;

                proxy_cache_bypass $http_upgrade;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_redirect off;

        }

       # server valid for *.mysite.cc
        listen 443 ssl; 
        ssl_certificate /etc/letsencrypt/live/mysite/fullchain.pem; 
        ssl_certificate_key /etc/letsencrypt/live/mysiteprivkey.pem; 
        include /etc/letsencrypt/options-ssl-nginx.conf; 
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 
}

client configuration:

                 peer = new Peer({
                         host: "peerjs.mysite.cc",
                         secure:true
                 })

rexmalebka avatar Oct 31 '21 01:10 rexmalebka

I was checking my code and discover that the ws connection was closed due to an Error in my "discover" function whiile using the listAllPeers  function

setInterval(function(){
    peer.listAllPeers(discover)
}, 2000)

this error could be reproduced by throwing any Error inside the callback function

 function  discover(peers){
    throw Error
}

rexmalebka avatar Oct 31 '21 15:10 rexmalebka