如何实现HTTP隧道

时间:2009-07-26 12:58:57

标签: flex http tunneling

我编写了一个连接到后端服务器的Flash(Flex)客户端来交换数据。

我也从头开始编写我的服务器,它有两个目的:

(1)Web(HTTP)服务器 - 默认侦听端口80

(2)Socket / Application- Server - 默认侦听端口443

仅供参考,出于方便原因,两台服务器都在同一个进程空间中运行。它们不会处理大量负载,所以我很好。

只要Flash客户端从HTTP套接字提供给浏览器,客户端就会尝试打开到套接字/应用程序服务器的XMLSocket。

我现在想要实现HTTP隧道,这样即使用户位于防火墙后面,我的客户端也可以连接到应用服务器。我不想要任何外部服务器(代理等) - 只需使用我已有的服务器。

我的问题:

(1)使用端口443更好吗? (它更好地欺骗防火墙吗?)

(2)据我所知,我需要做的只是确保我的实际应用程序数据只是封装在一个HTTP结构中(前面是一个虚拟HTTP头),来自客户端和服务器两侧。是这样还是我在这里遗漏了什么?

(3)我是否需要在通过套接字发送的每条消息中隐藏/封装我的数据,或者我可以在打开连接时封装第一条消息?

先谢谢你们! 起毛

1 个答案:

答案 0 :(得分:4)

不要重新发明轮子 - 通过AMF协议使用远程处理。 AMF是一种基于HTTP的二进制格式,可在ActionScript(MXML)和服务器端语言之间执行序列化。从技术上讲,这是HTTP隧道。 Adobe为AS / Java提供AMF的BlazeDS(开源)和LCDS(商业)实现,但是AS / PHP,AS / Python,AS / Ruby,AS / .Net的AMF的第三方实现。

BTW,AMF是一种开源格式。