【发布时间】:2018-03-30 13:19:59
【问题描述】:
我有一个在世界范围内使用的 C# 应用程序,它本质上运行一个 java 进程。我想扩展这个程序,并添加一个功能,人们可以在任何地方使用 Web 浏览器读取过程输出。 (并可能发送输入)
我的第一个想法是在 C# 应用程序中运行的 WebSocket 服务器,浏览器将使用 javascript 连接到它。但是,这需要在运行服务器的每个系统上进行端口转发,而我还没有找到比 NATUPnP 更好的解决方案,它无法在大量计算机上完成这项工作。
(如果这还不够,我无法在 C# 网络服务器和 javascript 之间建立成功的连接,但这是另一个问题)
所以我要问的是:
WebSocket 是我最好的选择吗? (最好的意思是稳定,不要太复杂)
有没有办法绕过端口转发问题?如果没有,您是否知道比 NATUPnP 更有效的方法?
【问题讨论】:
-
“正常”答案(例如 Nest Thermostats 使用,这是一个非常相似的问题)是有一个云服务充当家庭服务器和网络浏览器之间的代理。因此,家庭服务器连接到云服务,Web 浏览器连接到云服务,现在它们都可以相互通信,因为云服务充当代理。当然,必须有人付费才能运行该云服务,因此这完全取决于您的业务模式。
-
另外,您可以查看 STUN/TURN 服务器 - STUN 用于协商可能位于防火墙和 NAT 设备后面的两个客户端之间的直接路径。如果 STUN 无法协商直接路径,它将回退到使用 TURN 服务器,正如我上面所描述的,它本质上是一个中继。
-
听起来您需要构建一个Web服务兄弟并收工。您实际上是在尝试完成听起来相同的事情。是什么阻止你走这条路?
-
“构建网络服务”是什么意思?我该怎么做呢?
标签: javascript c# websocket portforwarding upnp