实现NAT后面的restful webservice

时间:2013-08-14 15:48:55

标签: c++ web-services rest long-polling

据我了解,不可能在NAT后面的设备上实现休息Web服务。所以我正在寻找一些解决方案。

是否可以使用long polling来实现Web服务?这样,本地设备将调用远程客户端(这正是我想要的),客户端必须保持连接打开(保持活动状态?),直到客户端想要调用webservice方法。它可以这样做,因为连接仍然是开放的。通话结束后,客户将立即向客户发送另一个民意调查......等等。 是否有可能以这种方式实现它?

我遇到的另一种解决方案:

ReverseHTTP - 我对此并不是很了解,但听起来我可以用这个来实现web服务。正确?

还有其他一些解决方案,如TURN或STUN,但它们似乎非常复杂。

你有什么建议吗? 我在我的网络设备上使用c ++ / linux。

编辑:端口转发不是一种选择。

2 个答案:

答案 0 :(得分:1)

这个问题中你有很多不同的概念。您当然可以在防火墙/ NAT后面实现RESTful服务...您只需配置防火墙/ NAT即可转发与服务的连接。有防火墙/ NAT设备超时连接的问题......在这里,您可以将设备配置为不这样做,或者您可以使用某种“保持活动”更新您的通信机制。 “长轮询”在某种程度上是不相关的,并且被用作从服务器获得“交互式响应”的一种方式...基本上服务器坐在来自客户端的轮询请求上,直到它有响应的内容或请求为止超时,客户再做一次。 STUN和TURN是更多与语音/视频通信相关的技术。我建议首先让您的防火墙/ NAT设备将基于Web的请求转发到您的Web服务器。

答案 1 :(得分:0)

你没有说你正在使用什么传输协议,我假设是HTTP。

HTTP使用TCP / IP,因此您的设备NAT需要将连接请求重定向到您的服务器。

还有其他方法,例如,如果您有多个互联网IP地址,那么请求也可以定向到服务器,但这比端口转发更复杂,所以我认为它不是您拥有的。

所以基本上你需要配置端口转发。就像一个PABX一样,来自外线​​的电话需要知道一个ramal才能到达手机,这是一个遥远的想法。

正如所说的那样,你所说的建议不是为了这个,主要是为了客户端连接,对于许多NAT来说没有必要,因为NAT准备这样做。