WebSocket Error in connection establishment: net::ERR_CONNECTION_CLOSED WebSocket Error in connection establishment: net::ERR_CONNECTION_CLOSED apache apache

WebSocket Error in connection establishment: net::ERR_CONNECTION_CLOSED


The problem was that I was not configure the WebSocket server for https/wss.

Here is the secure version of my insecure WebSocket server using "ws" from node.js.

var WebSocketServer = require('ws').Server,  fs = require('fs');var cfg = {        ssl: true,        port: 3000,        ssl_key: '/path/to/apache.key',        ssl_cert: '/path/to/apache.crt'    };var httpServ = ( cfg.ssl ) ? require('https') : require('http');var app      = null;var processRequest = function( req, res ) {    res.writeHead(200);    res.end("All glory to WebSockets!\n");};if ( cfg.ssl ) {    app = httpServ.createServer({        // providing server with  SSL key/cert        key: fs.readFileSync( cfg.ssl_key ),        cert: fs.readFileSync( cfg.ssl_cert )    }, processRequest ).listen( cfg.port );} else {    app = httpServ.createServer( processRequest ).listen( cfg.port );}var wss = new WebSocketServer( { server: app } );wss.on('connection', function connection(ws) {  ws.on('message', function incoming(message) {    console.log('received: %s', message);    ws.send(message);  });  ws.send('something');});


I was having a similar problem, turns out I was using CloudFlare who only allows very specific ports through.

So meteor running on port 3000 was instantly blocked.

Reconfiguring my Reverse Proxy settings and running Meteor on an allowed port solved my problem.

But, in the end, I turned off sockets on my Meteor deploy. It doesn't seem to have affected performance. Good luck,

UPDATE 4 YEARS LATER LOL

So we're using Apache2 and listening for a domain on port 80, but we're going to take the port 80 traffic and redirect it to localhost port 3020 in this case. It can really be any port. Hope this helps! Come check out www.StarLordsOnline.com if you wanna see it :)

<VirtualHost *:80>ServerAdmin info@starlordsonline.comServerName starlordsonline.comServerAlias www.starlordsonline.comRewriteEngine onRewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]RewriteRule .* ws://localhost:3020%{REQUEST_URI} [P]ProxyRequests off<Proxy *>        Order deny,allow        Allow from all</Proxy><Location />        ProxyPass http://localhost:3020/        ProxyPassReverse http://localhost:3020/</Location>