• 属于自己的完美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

  • 相关阅读:
    统计内存使用情况
    自动化测试---PO设计模式
    初识xshell
    pip插件遇到问题(fetch URL https)
    为什么大家都热衷于挖矿呢?
    80个python练习以及python一些值得收藏的教程或博客
    面试问到一个,让你写一下朋友圈点赞功能的测试用例!记录一下
    ajax异步请求302
    Java学习
    MVC 带扩展名的路由无法访问
  • 原文地址:https://www.cnblogs.com/omega8/p/9057865.html
Copyright © 2020-2023  润新知