32

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)
Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
Zhe Hu
  • 3,777
  • 4
  • 32
  • 45

3 Answers3

10

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.

Shaun Sweet
  • 669
  • 5
  • 9
4

(Self-answer moved from the question into the answers section)

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.

Actually, if one simply does:

var socket = io();

as the introduction to socket.io states:

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

So it works as well.

Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
  • I'm trying to establish connection through JavaScript's WebSocket constructor and it says that the protocol needs to be `ws://` or `wss://`. – Robo Robok May 23 '23 at 09:10
-1

Try using LocalTunnel:

Usage: lt --port [num] <options>

https://www.npmjs.com/package/localtunnel

Jason Mullings
  • 850
  • 14
  • 10