use of com.goodskill.chat.dto.ChatMessageDto in project goodsKill by techa03.
the class ChatHttpClient method main.
public static void main(String[] args) {
ChatMessageDto dto = new ChatMessageDto();
dto.setMessage("你好啊!!");
User user = new User();
user.setAccount("1as");
user.setUsername("李四");
user.setId(1);
BeanUtil.beanToMap(user);
String token = JwtUtils.createToken(BeanUtil.beanToMap(user));
dto.setToken(token);
new ChatHttpClient().sendMsg(dto);
}
use of com.goodskill.chat.dto.ChatMessageDto in project goodsKill by techa03.
the class ChatServerHandler method handlerAdded.
@Override
public void handlerAdded(ChannelHandlerContext ctx) {
Channel inComing = ctx.channel();
// 通知其他客户端有新人进入
for (Channel channel : channels) {
if (channel != inComing) {
String msg = "[欢迎: " + inComing.remoteAddress() + "] 进入聊天室!\n";
System.out.println(msg);
ChatMessageDto chatMessageDto = new ChatMessageDto();
chatMessageDto.setMessage(msg);
channel.writeAndFlush(chatMessageDto);
}
}
channels.add(inComing);
}
use of com.goodskill.chat.dto.ChatMessageDto in project goodsKill by techa03.
the class ChatServerHandler method channelRead.
@Override
public void channelRead(ChannelHandlerContext ctx, Object obj) throws InterruptedException {
ChatMessageDto msg = new ChatMessageDto();
User user;
if (obj instanceof FullHttpRequest) {
String token = ((FullHttpRequest) obj).headers().get("token");
String message = ((FullHttpRequest) obj).headers().get("msg");
new HttpRequestDecoder();
log.info("token: {}", token);
Map map = JwtUtils.parseToken(token);
user = BeanUtil.mapToBean(map, User.class, false, null);
HttpPostRequestDecoder decoder = new HttpPostRequestDecoder((HttpRequest) obj);
while (decoder.hasNext()) {
InterfaceHttpData httpData = decoder.next();
if (httpData instanceof Attribute) {
Attribute attr = (Attribute) httpData;
log.info("收到mutlipart属性:" + attr);
try {
msg.setMessage(attr.getValue());
} catch (IOException e) {
e.printStackTrace();
}
} else if (httpData instanceof FileUpload) {
FileUpload fileUpload = (FileUpload) httpData;
log.info("收到multipart文件:" + fileUpload);
// TODO 处理文件上传
}
}
decoder.destroy();
} else {
log.error("无法处理该数据!");
throw new RuntimeException();
}
String account;
if (user == null) {
account = ctx.channel().remoteAddress().toString();
} else {
account = user.getAccount();
}
String inMessage = msg.getMessage();
Channel inComing = ctx.channel();
String outMessage;
for (Channel channel : channels) {
if (channel != inComing) {
outMessage = "[用户" + account + " 说]" + inMessage + "\n";
} else {
outMessage = "[我说]" + inMessage + "\n";
}
System.out.println(outMessage);
msg.setMessage(outMessage);
FullHttpResponse response = getFullHttpResponse((HttpMessage) obj, outMessage);
channel.writeAndFlush(response);
}
}
Aggregations