这两天阅读了下google iot core的客户端程序,代码量很小,就是一个mqtt的client进行了一次封装,但是里面有两个点可以给大家分享下,源码地址https://github.com/vaelen/iot。
首先说下代码目录,核心代码我认为三个文件,iot.go、thing.go、paho\paho.go。文件里的内容也很简单,这里不一一解释了,重点是有一个设备的struct,
type ID struct {
ProjectID string
Location string
Registry string
DeviceID string
}
其中projectID对应google平台的项目id,deviceID是设备的唯一标识。
该源码里可以说道说道的核心点是里面用到的clock包和mock.go两个点,首先clock包github.com/benbjohnson/clock,对time包进行了封装,增加了对时间打桩,我们可以通过clock里提供的add方法修改时间以触发mock的timer定时器,非常有意思的一个包,大家可以尝试下。
另外一个点mock.go,该文件虽然我没有把它列到核心的文件里,但是为我们今后在开发有个很好的提醒,通过文件名字可以得知,是一个打桩文件,查看文件很容易get到他是一个mqtt client的mock,在没有mqtt server或者不去与server建联的前提下,也可以完成client业务流程的测试。