一、背景

    设计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(){

             // 其他的字符串,整型,浮点型数据

       }

   }

}

 

 

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐