|
|
@@ -31,6 +31,10 @@ public class NioSocketHandler extends SimpleChannelInboundHandler<String>{ |
|
|
|
private HKPeopleNumberFactory peopleNumberFactory; |
|
|
|
private CarNumberFactory carNumberFactory; |
|
|
|
private final ThreadPoolTaskExecutor threadPoolTaskExecutor; |
|
|
|
|
|
|
|
public ChannelHandlerContext cctx; |
|
|
|
public String sourceId; |
|
|
|
public String destId; |
|
|
|
|
|
|
|
public NioSocketHandler(ThreadPoolTaskExecutor threadPoolTaskExecutor,HKPeopleNumberFactory peopleNumberFactory,CarNumberFactory carNumberFactory) { |
|
|
|
this.threadPoolTaskExecutor = threadPoolTaskExecutor; |
|
|
@@ -45,7 +49,7 @@ public class NioSocketHandler extends SimpleChannelInboundHandler<String>{ |
|
|
|
// 你的处理逻辑 |
|
|
|
String clientId = ctx.channel().id().asShortText(); |
|
|
|
log.info("netty tcp 接收到用户id为"+clientId+"的消息: " + msg); |
|
|
|
|
|
|
|
cctx = ctx; |
|
|
|
// 应答报文,根据要求应答 |
|
|
|
String repeak = msg; |
|
|
|
handleMessage(ctx,msg); |
|
|
@@ -59,6 +63,7 @@ public class NioSocketHandler extends SimpleChannelInboundHandler<String>{ |
|
|
|
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { |
|
|
|
cause.printStackTrace(); |
|
|
|
ctx.close(); |
|
|
|
cctx = null; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@@ -91,29 +96,35 @@ public class NioSocketHandler extends SimpleChannelInboundHandler<String>{ |
|
|
|
log.debug("haikang keepOnline result:"+xintiaoresult); |
|
|
|
ctx.writeAndFlush(xintiaoresult); |
|
|
|
|
|
|
|
//给灯箱发送 |
|
|
|
for (int i = 0 ; i < types.length ; i++) { |
|
|
|
Map dxobj = new LinkedHashMap(); |
|
|
|
dxobj.put("dest", source); |
|
|
|
dxobj.put("source", dest); |
|
|
|
dxobj.put("func", "ControlData"); |
|
|
|
JSONArray datas1 = new JSONArray(); |
|
|
|
Map dm1 = new HashMap(); |
|
|
|
dm1.put("node", generateNode(types[i],source)); |
|
|
|
datas1.add(dm1); |
|
|
|
dxobj.put("data", datas1); |
|
|
|
String dengxiangcontent = JSON.toJSONString(dxobj); |
|
|
|
log.debug("haikang send result:"+dengxiangcontent); |
|
|
|
try { |
|
|
|
Thread.sleep(3000); |
|
|
|
} catch (InterruptedException e) { |
|
|
|
log.error("netty handleMessage error.",e); |
|
|
|
} |
|
|
|
ctx.writeAndFlush(dengxiangcontent); |
|
|
|
} |
|
|
|
sendControlData(ctx,source,dest); |
|
|
|
this.sourceId = source; |
|
|
|
this.destId = dest; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void sendControlData(ChannelHandlerContext ctx,String source,String dest) { |
|
|
|
//给灯箱发送 |
|
|
|
for (int i = 0 ; i < types.length ; i++) { |
|
|
|
Map dxobj = new LinkedHashMap(); |
|
|
|
dxobj.put("dest", source); |
|
|
|
dxobj.put("source", dest); |
|
|
|
dxobj.put("func", "ControlData"); |
|
|
|
JSONArray datas1 = new JSONArray(); |
|
|
|
Map dm1 = new HashMap(); |
|
|
|
dm1.put("node", generateNode(types[i],source)); |
|
|
|
datas1.add(dm1); |
|
|
|
dxobj.put("data", datas1); |
|
|
|
String dengxiangcontent = JSON.toJSONString(dxobj); |
|
|
|
log.debug("haikang send result:"+dengxiangcontent); |
|
|
|
try { |
|
|
|
Thread.sleep(3000); |
|
|
|
} catch (InterruptedException e) { |
|
|
|
log.error("netty handleMessage error.",e); |
|
|
|
} |
|
|
|
ctx.writeAndFlush(dengxiangcontent); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//编号2代表需要等待时长,编号3代表当前排队人数,编号4代表当前场内出租车,编号5代表在途出租车 |
|
|
|
private String generateNode(int type,String sn) { |
|
|
|
StringBuffer sb = new StringBuffer("0-5-").append(type).append("-"); |
|
|
@@ -123,10 +134,16 @@ public class NioSocketHandler extends SimpleChannelInboundHandler<String>{ |
|
|
|
value = 1;//查询等待时长 |
|
|
|
break; |
|
|
|
case 3: |
|
|
|
value = peopleNumberFactory.getPeopleNumber();;//查询当前排队人数 |
|
|
|
value = peopleNumberFactory.getPeopleNumber();//查询当前排队人数 |
|
|
|
if( value > 99) { |
|
|
|
value = 99; |
|
|
|
} |
|
|
|
break; |
|
|
|
case 4: |
|
|
|
value = carNumberFactory.getCarNumber();//查询场内出租车 |
|
|
|
if( value > 99) { |
|
|
|
value = 99; |
|
|
|
} |
|
|
|
break; |
|
|
|
case 5: |
|
|
|
value = 1;//查询在途出租车 |
|
|
|