优化连接方案

master
18201612589 2021-12-09 10:00:40 +08:00
parent 3f8c99bc70
commit 7416dd2f43
7 changed files with 166 additions and 55 deletions

View File

@ -1,11 +1,18 @@
package com.muyu.common; package com.muyu.common;
import com.muyu.pojo.Vehicle;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
/** /**
* netty * netty
*/ */
public class Config { public class Config {
/**
*
*/
public final static Vehicle VEHICLE = new Vehicle();
/** /**
* *
*/ */

View File

@ -0,0 +1,57 @@
package com.muyu.controller;
import com.muyu.common.Config;
import com.muyu.common.Response;
import com.muyu.netty.operate.NettyClientMsg;
import com.muyu.pojo.Vehicle;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author
* @Classname VehicleController
* @Description controller
* @Date 2021/12/8 16:45
*/
@RestController
@RequestMapping("/vehicle")
public class VehicleController {
/**
*
* @return
*/
@GetMapping
public Response getVehicle(){
return Response.success(Config.VEHICLE);
}
/**
*
* @return
*/
@GetMapping("/start")
public Response startVehicle(){
if (Config.ctx == null){
return Response.error("未连接netty服务器");
}
Config.VEHICLE.setStatus(1);
NettyClientMsg.sendMsg(Config.VEHICLE_START_SUF+Config.VIN);
return Response.success(Config.VEHICLE);
}
/**
*
* @return
*/
@GetMapping("/stop")
public Response stopVehicle(){
if (Config.ctx == null){
return Response.error("未连接netty服务器");
}
Config.VEHICLE.setStatus(0);
NettyClientMsg.sendMsg(Config.VEHICLE_STOP_SUF+Config.VIN);
return Response.success(Config.VEHICLE);
}
}

View File

@ -34,21 +34,6 @@ public class VehicleOperateController {
*/ */
private final LinkedBlockingQueue<String> locusQueue = new LinkedBlockingQueue<>(); private final LinkedBlockingQueue<String> locusQueue = new LinkedBlockingQueue<>();
/**
*
* @param vin
* @return
*/
@GetMapping("/start/{vin}")
public Response sendVehicleStart(@PathVariable(value = "vin") String vin){
if (Config.ctx == null){
return Response.error("未与netty服务器建立连接");
}
NettyClientMsg.sendMsg(Config.VEHICLE_START_SUF + vin);
NettyClientLogQueue.add("<p>VIN:"+vin+" 发送启动报文</p>");
return Response.success();
}
/** /**
* VIN线 * VIN线
* @param vin * @param vin
@ -92,18 +77,5 @@ public class VehicleOperateController {
} }
/**
*
* @param vin
* @return
*/
@GetMapping("/stop/{vin}")
public Response sendVehicleStop(@PathVariable(value = "vin") String vin){
if (Config.ctx == null){
return Response.error("未与netty服务器建立连接");
}
NettyClientMsg.sendMsg(Config.VEHICLE_STOP_SUF + vin);
NettyClientLogQueue.add("<p>VIN:"+vin+" 发送关闭报文</p>");
return Response.success();
}
} }

View File

@ -50,10 +50,6 @@ public class NettyClientHandler extends ChannelInboundHandlerAdapter {
break; break;
} }
if ("断开".equals(msg)){
ctx.writeAndFlush("客户端退出").addListener(ChannelFutureListener.CLOSE);
}
} }
/** /**

View File

@ -78,6 +78,9 @@ public class NettyClientInit {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
//解决意外关闭的情况,重新创建工作组,新的默认工作组
Common.workerGroup = new NioEventLoopGroup();
//优雅的关闭工作组
Common.workerGroup.shutdownGracefully(); Common.workerGroup.shutdownGracefully();
} }
} }

View File

@ -0,0 +1,26 @@
package com.muyu.pojo;
/**
* @author
* @Classname Vehicle
* @Description
* @Date 2021/12/8 16:26
*/
public class Vehicle {
/**
* 0: 1:
*/
private int status = 0;
public int isStatus() {
return status;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}

View File

@ -72,6 +72,21 @@
<span id="disconnect" class="label label-danger">已断开</span> <span id="disconnect" class="label label-danger">已断开</span>
</div> </div>
</div> </div>
<div class="col-md-2 divCss divBorderHeight" style="padding: 2px">
<div class="col-md-6" style="padding: 5px 0px;">
<span>车辆状态</span>
<span>
<span id="vehicleStart" class="label label-success" style="display: none">运行</span>
<span id="vehicleStop" class="label label-danger">关闭</span>
</span>
</div>
<div class="col-md-3">
<button type="button" class="btn btn-sm btn-default" onclick="vehicleStart()">启动</button>
</div>
<div class="col-md-2">
<button type="button" class="btn btn-sm btn-default" onclick="vehicleStop()">关闭</button>
</div>
</div>
<div class="col-md-1 divCss divBorderHeight" style="padding: 2px"> <div class="col-md-1 divCss divBorderHeight" style="padding: 2px">
<div class="col-md-4"> <div class="col-md-4">
<button type="button" class="btn btn-sm btn-default" onclick="startNettySendMsg()">上报</button> <button type="button" class="btn btn-sm btn-default" onclick="startNettySendMsg()">上报</button>
@ -529,9 +544,11 @@
</div> </div>
</body> </body>
<script> <script>
//日志定时器
var nettyLogTime = null; var nettyLogTime = null;
//消息发送定时器
var nettyMsgTime = null; var nettyMsgTime = null;
//数据模拟定时器
var vehicleImitateData = null; var vehicleImitateData = null;
/** /**
* 连接服务器 * 连接服务器
@ -569,7 +586,48 @@
$("#disconnect").css("display",""); $("#disconnect").css("display","");
} }
/* 上线 */
function vehicleStart() {
$.muyuSend.get("/vehicle/start",undefined,function (response) {
if (response.code == 100){
if (response.data.status == 1){
vehicleStartDis();
}else {
vehicleStopDis();
}
}else {
$.modal.msgError(response.msg);
}
})
}
/* 下线 */
function vehicleStop() {
$.muyuSend.get("/vehicle/stop",undefined,function (response) {
if (response.code == 100){
if (response.data.status == 1){
vehicleStartDis();
}else {
vehicleStopDis();
}
}else {
$.modal.msgError(response.msg);
}
})
}
function vehicleStartDis() {
$("#vehicleStart").css("display","");
$("#vehicleStop").css("display","none");
}
function vehicleStopDis() {
$("#vehicleStart").css("display","none");
$("#vehicleStop").css("display","");
}
$(function () { $(function () {
//查询netty状态
$.muyuSend.get("/nettyClient/status",undefined,function (response) { $.muyuSend.get("/nettyClient/status",undefined,function (response) {
if (response.code == 100){ if (response.code == 100){
connectEnd(); connectEnd();
@ -577,37 +635,29 @@
disconnect(); disconnect();
} }
}) })
//查询车辆状态
$.muyuSend.get("/vehicle",undefined,function (response) {
if (response.code == 100){
if (response.data.status == 1){
vehicleStartDis();
}else {
vehicleStopDis();
}
}
})
startNettyLog(); startNettyLog();
}) })
function addLog(msg){ function addLog(msg){
$("#vehicleMsgLog").append(msg); $("#vehicleMsgLog").append(msg);
} }
function startNettySendMsg(){ function startNettySendMsg(){
var vin = $("#vin").val();
if (vin != null && vin != ''){
$.muyuSend.get("/vehicle/operate/start/"+$("#vin").val(),undefined,function (response) {
if (response.code == 100){
nettyMsgTime = setInterval("sendNettySendMsg()", 1000); nettyMsgTime = setInterval("sendNettySendMsg()", 1000);
}else { $.modal.msgSuccess("车辆开始上报")
alert(response.msg);
}
})
}else {
$.modal.msgWarning("请输入VIN");
}
} }
function stopNettyStopMsg(){ function stopNettyStopMsg(){
clearInterval(nettyMsgTime); clearInterval(nettyMsgTime);
nettyMsgTime = null; nettyMsgTime = null;
$.muyuSend.get("/vehicle/operate/stop/"+$("#vin").val(),undefined,function (response) { $.modal.msgSuccess("车辆结束上报")
if (response.code == 100){
$.modal.msgSuccess("车辆下线成功")
}else {
alert(response.msg);
}
})
} }
function sendNettySendMsg(){ function sendNettySendMsg(){
$.muyuSend.post("/vehicle/operate/sendMsg",getFormToMap("vehicleForm"),function (response) { $.muyuSend.post("/vehicle/operate/sendMsg",getFormToMap("vehicleForm"),function (response) {