using ngrok with websocket (or socket.io)

Zhe Hu picture Zhe Hu · Jul 9, 2015 · Viewed 13.8k times · Source

Are there any simple sample code showing ngrok forwarding socket.io/websocket (running under nodejs on localhost)?

In other words, does

ngrok http 3000

work with a nodejs server and socket.io running on port 3000? Or something like

ngrok http+tcp 3000 (just wild guessing)

EDIT:

to answer my own question after help from ngrok.com

simply use

ngrok http 3000

You will see the web address string that localhost binds to. So in the client javascript code, change

var socket = io.connect('http://localhost:3000');

to

var socket = io.connect('http://94349fe6.ngrok.io');

NOTE:

http://94349fe6.ngrok.io is just that web address string. Yours will be different from this one.

EDIT AGAIN:

actually, if one simply does:

var socket = io();

"it defaults to trying to connect to the host that serves the page"

So it works as well.

Answer

Shaun Sweet picture Shaun Sweet · Jul 19, 2017

Yes. If your node app is working off of port 3000 like in your example then just use ngrok to create a reverse proxy to expose 3000 to the world. Websockets will work just fine with it.