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