Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Testing if client can connect to WebSockets with port 80, 443, 843

I'm running a WebSockets application on a node server. Everything works fine, except that my application is used in schools, and some of their firewalls apparently block WebSockets on port 80. I read that some ports like 843 are usually unblocked, but I want to test this before making any switch.

How to test for open WebSockets ports? e.g. try ports 80, 443 & 843 from the client-side and report which ones work? Any tutorials or code snippets would be great...

like image 375
Deepak Joy Cheenath Avatar asked Mar 30 '14 14:03

Deepak Joy Cheenath


1 Answers

I've been using http://websocketstest.com/ to see blocking of my socket.io websockets. I just now came across a scenario too where a client had a firewall blocking traffic on port 80. Rather than insisting on them jumping through hoops I am now listen on 443, not necessary to use SSL either on that port for this purpose.

In nginx I am first redirecting all traffic to socket.test.com port 80 to port 443 thus:

server {
    listen              80;
    server_name             socket.test.com;
    rewrite             ^ http://test.com:443$request_uri?;
 }

then

server {
    listen 443;
    server_name  socket.test.com

    location / {
        proxy_pass http://127.0.0.1:3004;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

On port 3004 a socket.io server is accepting connections. Works!

2018 update: thanks to letsencrypt.com it's now trivial to add https certs so all this can be done with encryption on 443

like image 143
Jeroenv3 Avatar answered Oct 24 '22 11:10

Jeroenv3