golang--读uniqush看http.Handle
2016-02-22 00:00
387 查看
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代码,发现很大,而且感觉乱。现在理清了思路,里面就简单了监控了几个字段,然后把结果发送到客户端。
由于是在同学的机器上看代码,也没有运行程序,等有机会编译运行后,截个图发上来。
转贴请注明来自:
格通
在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代码,发现很大,而且感觉乱。现在理清了思路,里面就简单了监控了几个字段,然后把结果发送到客户端。
由于是在同学的机器上看代码,也没有运行程序,等有机会编译运行后,截个图发上来。
转贴请注明来自:
格通
相关文章推荐
- golang--类似mochiweb的多进程监听tcp链接
- virtualbox--在win7设置ubuntu虚拟机网络
- erlang访问https地址
- iOS网络编程之一——iOS网络框架简介
- iOS网络编程之二——NSURLSession的简单使用
- iOS网络编程之三——NSURLConnection的简单使用
- Centos6.5查看nginx并发连接数和TCP连接状态命令
- 计算机网络9--计算机网络性能
- HTTP协议上传boundary确定&下载content-disposition理解
- TCP/IP、Http、Socket的区别
- java35.HTTP通信------使用HttpClient进行Post方式通信
- 前端开发必备!Emmet使用手册(转自 http://www.w3cplus.com/tools/emmet-cheat-sheet.html)
- keepalived(nginx)+httpd实现动静分离
- Sublime text 3 中Package Control 的安装与使用方法(转自 http://devework.com/sublime-text-3-package-control.html)
- java34.HTTP通信------使用HttpClient进行Get方式通信
- 开源一个网络图片浏览器HooPhotoBrowser
- okhttp
- Unity使用protobuf-net实现的网络框架
- iscsi 挂载网络存储及存储访问
- Sublime Text 3 破解版 + 注册机 + 汉化包(转自 http://www.cnsecer.com/251.html)