netty-确定客户端和微信端的沟通方式
This commit is contained in:
@@ -1,13 +1,18 @@
|
||||
package com.sv.netty;
|
||||
|
||||
import com.sv.netty.message.HeartBeat;
|
||||
import com.sv.netty.config.HeartBeat;
|
||||
import com.sv.netty.config.VenueMessage;
|
||||
import com.sv.netty.utils.EncodeMsg;
|
||||
import com.sv.netty.utils.JsonUtils;
|
||||
import com.sv.service.MessageService;
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.SimpleChannelInboundHandler;
|
||||
import io.netty.handler.timeout.IdleState;
|
||||
import io.netty.handler.timeout.IdleStateEvent;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
@@ -19,6 +24,7 @@ import java.net.UnknownHostException;
|
||||
*/
|
||||
@ChannelHandler.Sharable
|
||||
public class ClientHandler extends SimpleChannelInboundHandler<String> {
|
||||
private final Logger logger = LoggerFactory.getLogger(ClientHandler.class);
|
||||
|
||||
/**
|
||||
* 当通道就绪就会触发
|
||||
@@ -48,9 +54,9 @@ public class ClientHandler extends SimpleChannelInboundHandler<String> {
|
||||
*/
|
||||
@Override
|
||||
public void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception {
|
||||
System.out.println("接收服务器响应msg:[" + msg + "]");
|
||||
// MessageDTO message = JsonMapper.fromJson(msg, MessageDTO.class);
|
||||
// MessageService.getInstance().execute(message);
|
||||
logger.info("接收服务器响应msg:[" + msg + "]");
|
||||
VenueMessage message = JsonUtils.decode(msg, VenueMessage.class);
|
||||
MessageService.getInstance().execute(message);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +94,7 @@ public class ClientHandler extends SimpleChannelInboundHandler<String> {
|
||||
*/
|
||||
@Override
|
||||
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
|
||||
System.out.println("ClientHandler exceptionCaught");
|
||||
logger.info("ClientHandler exceptionCaught");
|
||||
cause.printStackTrace();
|
||||
Channel channel = ctx.channel();
|
||||
if(channel.isActive()) {
|
||||
|
||||
@@ -5,6 +5,8 @@ import io.netty.channel.*;
|
||||
import io.netty.channel.nio.NioEventLoopGroup;
|
||||
import io.netty.channel.socket.nio.NioSocketChannel;
|
||||
import io.netty.handler.logging.LoggingHandler;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -17,6 +19,7 @@ import java.util.concurrent.TimeUnit;
|
||||
* @date 07/12/2017 10:12 PM
|
||||
*/
|
||||
public class ClientThread extends Thread{
|
||||
private final Logger logger = LoggerFactory.getLogger(ClientThread.class);
|
||||
|
||||
private static ClientThread instance;
|
||||
|
||||
@@ -69,11 +72,11 @@ public class ClientThread extends Thread{
|
||||
}
|
||||
|
||||
public void doConnect() {
|
||||
System.out.println("现在开始链接了");
|
||||
logger.info("现在开始链接了");
|
||||
if (closed) {
|
||||
return;
|
||||
}
|
||||
System.out.println("连接 = " + remoteHost + " " + remotePort);
|
||||
logger.info("连接 = " + remoteHost + " " + remotePort);
|
||||
future = bootstrap.connect(new InetSocketAddress(remoteHost, remotePort));
|
||||
future.addListener(new ChannelFutureListener() {
|
||||
public void operationComplete(ChannelFuture f) throws Exception {
|
||||
@@ -82,9 +85,9 @@ public class ClientThread extends Thread{
|
||||
public void run() {
|
||||
if (!f.isSuccess()) {
|
||||
doConnect();
|
||||
System.out.println("等待连接");
|
||||
logger.info("等待连接");
|
||||
} else {
|
||||
System.out.println("已连接");
|
||||
logger.info("已连接");
|
||||
}
|
||||
}
|
||||
}, 2, TimeUnit.SECONDS);
|
||||
@@ -110,7 +113,7 @@ public class ClientThread extends Thread{
|
||||
@Override
|
||||
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
|
||||
super.channelInactive(ctx);
|
||||
System.out.println(ctx.toString() + "======inactive");
|
||||
logger.info(ctx.toString() + "======inactive");
|
||||
ctx.channel().eventLoop().schedule(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
package com.sv.netty.message;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 客户端心跳数据包
|
||||
* HeartBeat.java
|
||||
*
|
||||
* @author peakren
|
||||
* @date 07/12/2017 10:23 PM
|
||||
*/
|
||||
public class HeartBeat implements Serializable {
|
||||
|
||||
private Integer venueId; //场馆号
|
||||
|
||||
private String deviceName; //设备号
|
||||
|
||||
public Integer getVenueId() {
|
||||
return venueId;
|
||||
}
|
||||
|
||||
public void setVenueId(Integer venueId) {
|
||||
this.venueId = venueId;
|
||||
}
|
||||
|
||||
public String getDeviceName() {
|
||||
return deviceName;
|
||||
}
|
||||
|
||||
public void setDeviceName(String deviceName) {
|
||||
this.deviceName = deviceName;
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package com.sv.netty.message;
|
||||
|
||||
public enum MessageType {
|
||||
HB("连接"),
|
||||
OPEN_DOOR("开门");
|
||||
|
||||
private String message;
|
||||
|
||||
MessageType(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
package com.sv.netty.message;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class VenueMessage implements Serializable {
|
||||
|
||||
private MessageType messageType;
|
||||
private String message;
|
||||
|
||||
public MessageType getMessageType() {
|
||||
return messageType;
|
||||
}
|
||||
|
||||
public void setMessageType(MessageType messageType) {
|
||||
this.messageType = messageType;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.sv.service;
|
||||
|
||||
import com.sv.netty.message.VenueMessage;
|
||||
import com.sv.netty.config.VenueMessage;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* 消息服务
|
||||
@@ -11,6 +13,8 @@ import com.sv.netty.message.VenueMessage;
|
||||
*/
|
||||
public class MessageService {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(MessageService.class);
|
||||
|
||||
static private MessageService sInstance;
|
||||
|
||||
static public MessageService getInstance() {
|
||||
@@ -34,7 +38,7 @@ public class MessageService {
|
||||
openDoor();
|
||||
break;
|
||||
default:
|
||||
System.out.println( "default");
|
||||
logger.info( "default");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +47,7 @@ public class MessageService {
|
||||
*/
|
||||
public void openDoor() {
|
||||
// 开门
|
||||
System.out.println("开门成功!!!");
|
||||
logger.info("开门成功!!!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user