Search in sources :

Example 1 with ChatMessageDto

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);
}
Also used : ChatMessageDto(com.goodskill.chat.dto.ChatMessageDto) User(com.goodskill.entity.User)

Example 2 with ChatMessageDto

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);
}
Also used : ChatMessageDto(com.goodskill.chat.dto.ChatMessageDto) Channel(io.netty.channel.Channel)

Example 3 with ChatMessageDto

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);
    }
}
Also used : User(com.goodskill.entity.User) Attribute(io.netty.handler.codec.http.multipart.Attribute) Channel(io.netty.channel.Channel) IOException(java.io.IOException) HttpPostRequestDecoder(io.netty.handler.codec.http.multipart.HttpPostRequestDecoder) ChatMessageDto(com.goodskill.chat.dto.ChatMessageDto) InterfaceHttpData(io.netty.handler.codec.http.multipart.InterfaceHttpData) Map(java.util.Map) FileUpload(io.netty.handler.codec.http.multipart.FileUpload)

Aggregations

ChatMessageDto (com.goodskill.chat.dto.ChatMessageDto)3 User (com.goodskill.entity.User)2 Channel (io.netty.channel.Channel)2 Attribute (io.netty.handler.codec.http.multipart.Attribute)1 FileUpload (io.netty.handler.codec.http.multipart.FileUpload)1 HttpPostRequestDecoder (io.netty.handler.codec.http.multipart.HttpPostRequestDecoder)1 InterfaceHttpData (io.netty.handler.codec.http.multipart.InterfaceHttpData)1 IOException (java.io.IOException)1 Map (java.util.Map)1