2009年2月6日星期五

Fun With HTTP

现在Nebula3变得有点复杂了,很重要的是要明白运行的程序内部是怎么回事。在Nebula2,这主要是靠内置于游戏中的调试窗口(一个纹理浏览器,一个“watcher variable”浏览器,等等...)。但创建新的窗口是一件困难和烦人的工作(特别是因为排版代码)。对于Nebula3我想让这事情变得简单和强大:一个简单内置的HTTP服务器将为各种类型的调试信息提供HTML页面显示。这个想法不是新的,其他人已经这样做了,但对于Nebula2的IO和网络系统写一个HTTP服务器是一项很重的任务。

在Nebula3只需很少的代码就可以了,TcpServer类已经处理所有的连接,只要一对流读写器去解码和编码HTTP的请求和响应,用很短的时间就你可以写出一个HTTP服务器。

以下是它如何工作的一个大概:

1.创建和打开一个TcpServer对象。
2.为一系列TcpClientConnections每帧轮询TcpServer。
3.对于每个TcpClientConnection:
3.1添加一个HttpRequestReader到接收到的流。
3.2添加一个HttpResponseWriter到发送的流。
3.3决定根据请求要发送什么回去,并把结果填入到响应里面。
3.4调用TcpClientConnection.Send()

实际HTTP协议的编码/解码是发生在HttpRequestReader和HttpResponseWriter类中。

这是第一个从Nebula3应用程序到网页浏览器的信息:



现在缺少能输出带有实际内容的HTML页面的一些HtmlWriter,和一个能输出图像到web浏览器的HttpImageWriter。

原文: Fun With HTTP

[声明]:限于译者水平,文中难免错漏之处,欢迎各位网友批评指正;

没有评论:

发表评论