设计物联网的接口
一、背景设计Java版本的物联网通信接口。二、主要通信模式1、生产消费模式客户端不断的生产数据服务端不断的消费数据。中间有一个队列缓冲。2、订阅推送模式一个或者多个客户端订阅一个话题。一个或者多个客户端给话题推送消息。三、主要接口(一)订阅或者消费1、连接服务端public Client(String 服务端地址, int 端口)2、登录boolean login(String 用户名, String 密码)3、订阅话题没有订阅就是默认话题的生产消费模式。void subscribe(String 话题)4、异步接收消息void setListener(EventListener listen)EventListener类的主要方法// 接受字节序列public void receive(byte[] data)// 接收整数public void receive(long data)// 接收浮点数public void receive(double data)// 接收字符串public void receive(String str)(二)推送或者消费1、连接服务端public Client(String 服务端地址, int 端口)2、登录boolean login(String 用户名, String 密码)3、指定推送话题void setTopic(String 话题)4、推送消息// 发送字节序列public void publish(byte[] data)// 发送整数public void publish(long data)// 发送浮点数public void publish(double data)// 发送字符串public void publish(String str)(三)关闭public void close()四、总结1、设计通信协议和接口比较简单。关键是需要指定每个数据块的类型和长度。2、监听数据一般是一个线程在后台循环读取。假设后台监听数据的线程逻辑是下列public void run(){while(state.get()){// 读取数据包的类型int type client.readType();// 如果等于1代表是数组类型if(type 1){listen.recieve(client.readArray());} else if(){// 其他的字符串整型浮点型数据}}}