吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 907|回复: 3
收起左侧

[求助] netty websocket 请教 已解决

[复制链接]
ppgjx 发表于 2022-5-20 21:57
本帖最后由 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 void  handlerAdded(ChannelHandlerContext ctx) throws  Exception{

        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());
    }



}


image.png
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

a526600908 发表于 2022-5-21 10:25
https://www.52pojie.cn/forum.php ... 2%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调试吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表