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

由于对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

转载于:https://www.cnblogs.com/omega8/p/9057865.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值