码迷,mamicode.com
首页 > Web开发 > 详细

属于自己的完美web服务器完成

时间:2018-05-18 20:37:57      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:项目   个人   orm   包含   node   soc   tps   架构   api   

由于对lua语言非常喜欢,加上工作是做web开发,所以一直在关注lua的web服务器项目,包括xavante、aLiLua、openresty、tengine等
xavante是我最早接触到的,当时还没有阻塞这个概念,现在知道它是阻塞的,在lua单线程下使用会有性能问题,而且没有文件上传、websocket等功能。
aLiLua、openresty都是非阻塞的,aLiLua名字带个ali最初被我误以为是阿里的项目,其实是个私人项目,网站已经不能访问了,支持websocket,但是不支持文件上传。
openresty比较出名,社区很活跃,通过扩展既支持文件上传也支持websockt。但是有一点不满足我的需求,它基于nginx的,nginx的多进程架构使得它没有传统java服务器那样上下文的概念,不支持常驻内存的数据和代码,意味着在lua代码里面定义一个全局变量,不能在下次请求的时候使用它,因为它有可能被销毁了,下一次请求可能是别的进程处理的,这也直接导致了openresty的websocket实现不能主动推消息给客户端,只能通过消息订阅等不友好的方法来推送消息给客户端,虽然很强大,但是我只能放弃。
tengine是阿里的项目,也是基于nginx,类似openresty,了解得不多,也不满足我的要求。
最近学了一些http协议相关的知识,就想自己来实现文件上传和websocket报文的解析,终于磨刀霍霍,把它写完了。由于是个人项目,没经过严格测试,bug肯定不少,这个在以后使用中慢慢调优。这些功能都是基于luvit项目之上开发的,不然要自己写完整的http服务器太浪费时间。
目前这个基于luvit的二次开发服务器已经包含了我所需要的所有功能:Cookie解析和设置,session会话,基于If-Modified-Since请求头的客户端缓存机制,类似j2ee的过滤器实现,multipart/form-data报文解析(用于文件上传),websocket报文解析。
下载地址:http://resource.omega.pw/software/lua/luv/luv-http-server.tar.gz

luvit项目介绍:
luvit项目是在luv项目的基础上实现一套类似nodejs的库,基本上实现了nodejs大部分api,但是nodejs是在不停更新的,luvit肯定追不上,项目地址:https://github.com/luvit/luvit
luv项目是lua对libuv库的绑定,项目地址:https://github.com/luvit/luv

属于自己的完美web服务器完成

标签:项目   个人   orm   包含   node   soc   tps   架构   api   

原文地址:https://www.cnblogs.com/omega8/p/9057865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!