golang--读uniqush看http.Handle

getong · · 4338 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

uniqush是一款用golang写的推送服务工具,它的介绍在这里。官网在这里,源码托管在github。uniqush现在的版本是1.4.2, 在我们国人用golang写的代码中,这个应该算是出类拔萃的。


在main.go文件里面的main()函数,直接就运行Run()函数,它会返回一个error值。在configparser.go里面找到Run()函数的定义,里面运行了2个goroutine。1个goroutine是rest.signalSetup()函数,在类unix平台下,它会监控syscall.SIGTERM, os.Kill信号;在windows下,它会监控os.Kill信号。监控到信号后,它会优雅关闭服务。另一个goroutine是rest.Run()函数。在rest.Run()函数里面,它里面运行了几个http.Handle()函数。然后就查看了一下http.Handle()函数的定义,有了这片博文。

http.Handle()函数的定义是func Handle(pattern string, handler Handler),其中pattern就是类似http://localhost:port/hello中的hello字段。Handler是一个interface,它里面声明了一个ServeHTTP()函数。回过头来看,在restapi.go文件里面,RestAPI结构就实现了一个ServeHTTP()函数。所以从这个角度看来,uniqush是一个简单的http应用。

刚看uniqush代码,发现很大,而且感觉乱。现在理清了思路,里面就简单了监控了几个字段,然后把结果发送到客户端。
由于是在同学的机器上看代码,也没有运行程序,等有机会编译运行后,截个图发上来。

转贴请注明来自:格通

有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:getong

查看原文:golang--读uniqush看http.Handle

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4338 次点击  ∙  2 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传