ppgjx 发表于 2022-5-20 21:57

netty websocket 请教 已解决

本帖最后由 ppgjx 于 2022-5-20 22:06 编辑

我使用netty websocket本地启动后 我使用wecsocket在线测试我打开了网页两个标签页 都链接了这个服务 这时候好像就紊乱了 我数据的处理代码是这样的 遍历所有链接的客户端 判断是不是自己 如果不是则发送信息 如果是自己则发送 "自己" 两个字符串 如图1 发送了蔡徐坤 图1自己收到了蔡徐坤 和自己两条信息 图二就没有任何消息 这是哪里问题呢?
package com.ppgjx.app.netty.test;


import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.channel.group.ChannelGroup;
import io.netty.channel.group.DefaultChannelGroup;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import io.netty.util.concurrent.GlobalEventExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.time.LocalDate;

@Component
@Slf4j
public class TestChannelHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> {


    //用户id=>channel示例
    //可以通过用户的唯一标识保存用户的channel
    //这样就可以发送给指定的用户
    public static ChannelGroup clients = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);


    //客户端断开链接
    @Override
    public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {
      System.out.println("客户端断开连接 --- " + ctx.channel().id() );
      clients.remove(ctx.channel());
    }

    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
      System.out.println("channelRead");
      super.channelRead(ctx, msg);
    }

    @Override
    protected void channelRead0(ChannelHandlerContext ctx, TextWebSocketFrame msg) throws Exception {
      //获取客户端消息
      String context = msg.text();
      System.out.println("数据 ---" + context);
      //通知所有客户端
//      clients.writeAndFlush(new TextWebSocketFrame(LocalDate.now() + " " +ctx.channel().id().asShortText() + " 消息内容 --- " + context + " 在线客户 -- " + clients.size()));
      clients.forEach(ch -> {
            System.out.println(ch.id().asLongText());
            //自己不发送
         if(ctx.channel() != ch){
               ctx.writeAndFlush(new TextWebSocketFrame(context));
         }else {
               ctx.writeAndFlush(new TextWebSocketFrame("自己"));
         }
      });
    }


    //客户端建立连接
    @Override
    public voidhandlerAdded(ChannelHandlerContext ctx) throwsException{

      System.out.println("客户端建立连接 --- " + ctx.channel().id() );
      //添加channels
      clients.add(ctx.channel());
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
      System.out.println("异常 --- " + ctx.channel().id());
      ctx.channel().close();
      clients.remove(ctx.channel());
    }



}




a526600908 发表于 2022-5-21 10:25

https://www.52pojie.cn/forum.php?mod=viewthread&tid=1604011&highlight=%CD%F2%C4%DC%B8%F1%CA%BD

大哥 ,你的音频视频图片万能格式转换 工具很好用,就是转换MP3的音质压缩的好厉害,请问在哪里可以调整参数啊

ppgjx 发表于 2022-5-21 10:29

a526600908 发表于 2022-5-21 10:25
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1604011&highlight=%CD%F2%C4%DC%B8%F1%CA%BD

大 ...

你用格式工厂呗 音频这块我也不清楚 我这边就是对ffmpeg进行的封装 理论上都是无损转换的

xman55555 发表于 2022-5-21 18:46

自己写个web测试下吧...貌似是限制了客户端吧,不能是同一个ip调试吧
页: [1]
查看完整版本: netty websocket 请教 已解决