本章主要模拟终端设备通过事先制定的协议进行数据上报及执行服务端下发的控制命令,并返回控制命令的执行结果。
示例代码:
上报消息的封装
private static void upstream() {
Upstream upstream = new Upstream().setStatus(StatusType.ONEND)
// 模拟坐标,大概范围在江浙沪地区
.setLongitude((int) (new Random().nextDouble(120, 121) * RequestConstant.COORDINATE_CONVERSION))
.setLatitude((int) (new Random().nextDouble(31, 32) * RequestConstant.COORDINATE_CONVERSION));
BasicMessage message = new BasicMessage()
.setRequest(RequestType.UP_STREAM).setResponse(ResponseType.SUCCESS)
.setPayload(upstream.encode()).setTimestamp(System.currentTimeMillis());
CLIENT.getChannel().eventLoop().execute(() -> {
CLIENT.getChannel().writeAndFlush(message);
});
}
控制命令处理流程
@Slf4j
public class DownStreamHandler extends AbstractMessageHandler {
@Override
public void request(ChannelHandlerC