关于ajax和httpd已经开发完毕,只是在维护中。
其实这个程序很简单,
服务器在得到url后,把?号前的部分当命令来解析,?号后的部分当参数来传递。
相当于本地的CGI
命令解析的一个小技巧是可以用/来进行命令的分类,如player/rewind?16
参数的传递就是一个结构的序列化和反序列化成字符串的一个过程,注意这里不要与http的特殊字符有冲突
命令解析后可以与相应的函数指针对应,这样可以直接调用函数。
如果命令比较多,可以用hash表来找其相应的执行函数。
参数的打包和解包可以参考JSON,
但是有一个比较小巧的方式就是直接以分割符的方式来做,缺点是参数不直观
返回的内容可以打包成xml,但是要注意xml的大小,因为是在机顶盒上。
可以把xml分开来传,只是服务器要做缓存。
服务器端的缓存,不能太大也不能太小,所以要缓存一些比较关键的信息,如同一目录下的所有文件分页传输。
同时服务器也要记录一些全局性的状态,尤其是网页在跳转过程中保存不了的,如播放器的状态。
文件的存储也需要权衡,缓存文件可以放到/var(内存文件系统)下,配置文件可以放到/root(flash的永久保存)下,
与硬盘相关的文件一定要放到硬盘上,如背景音乐列表
有些是网页实现不了的,如播放背景音乐,同时要进行浏览(这个会涉及到页面的跳转),因此要服务器端来实现,
但是控制一定要让网页来实现,比如有统一的背景音乐添加页面
和浏览器的XMLHTTPREQUST通信也比较复杂,因为每个浏览器的实现不同,
虽然是异步的,但是有的不支持两个以上同时用,有的不支持递归调用
因此可以用javascript写一个队列,用settimeout的方式来序列化发送请求
同时这也能解决快速按键的问题