如何将外部 IP 端口转发到本地托管的 websocket 服务器?

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

我已经使用ktor框架创建了一个本地websocket服务器,在下面的IP中本地可用。

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

而且我可以通过点击

从邮​​递员本地访问它

ws://192.168.1.10:8080/chat

我想从互联网连接到这个套接字,但是当我设置端口转发(使用 NAT 虚拟服务器配置)时,这似乎不起作用。我收到超时错误。

我试过这个是因为它对我在另一个端口创建的 http 服务器(express 应用程序)工作正常。从下面的 NAT 虚拟服务器配置,我能够进行端口转发并从互联网访问 Web 服务。

我对套接字编程和网络还很陌生。多多指教。

您不能将一个外部端口映射到两个不同的服务器端口。每个服务器都需要一个映射到它的不同外部端口。现在,您已将外部端口 80 映射到 192.168.1.10:3000192.168.1.10:8080

一旦您解决了为每个服务器使用单独的外部端口的问题,那么 http://<externalIP>:<externalPort1>ws://<externalIP>:<externalPort2> 应该可以正常工作以分别从外部世界访问 HTTP 和 WebSocket 服务器。