Search code examples
network-programmingwebsocketktorws

How to port forward external IP to websocket server hosted locally?


I have created a local websocket server using the ktor framework, which is available locally in the below IP.

[main] INFO  Application - Responding at http://192.168.1.10:8080

And I'm able to access it locally from postman by hitting

ws://192.168.1.10:8080/chat

I would like to connect to this socket from the internet, But when I setup port forwarding (using NAT virtual server configuration), this doesn't seem to work. I get timed out error.

I tried this because, it is working fine for the http server (express app) I created in another port. From the below NAT virtual server configuration, I was able to do port forwarding and access the webservice from the internet.

enter image description here

I'm quite new to socket programming and networking. Kindly advice.


Solution

  • You can't have a single External Port mapped to two different Server ports. Each Server needs a distinct External Port mapped to it. Right now, you have External Port 80 mapped to both 192.168.1.10:3000 and 192.168.1.10:8080.

    Once you fix that issue to use a separate External Port for each Server, then http://<externalIP>:<externalPort1> and ws://<externalIP>:<externalPort2> should work properly to reach the HTTP and WebSocket servers, respectively, from the outside world.