netty客户端连接时传递参数问题

很久很久没写博客了,long long ago 了。期间很多经验想记录下来的,都因为种种原因搁置了。今天来记录下netty客户端连接时的传参问题。
1、使用场景
后端需要记录登录人和通道id,希望可以指定人员发送消息
2、使用思路
前端在socket连接的时候,将人员id放到路径ip的后面,格式如下:
ip/自定义名称?人员id。
然后后端在建立连接时,监测是否首次连接,如果是,则提取出请求url,截取到需要的人员id,存储到map中(并发场景下使用ConcurrentHashMap)。
3、错误示例
如果不做其他修改,你会发现原来可以请求成功的地址,加了这个后就无法建立连接了。因为WebSocketServerProtocolHandler默认是路径全检测,即设置的websocketPath和url进行完全比对,一致后才会通过验证。
4、修改点
配置的WebSocketServerProtocolHandler中增加两个属性,使用如下的重载方法:
在这里插入图片描述
这两个属性如下配置:
在这里插入图片描述
这样就是仅检测前部分的地址了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Netty是一个基于Java的网络通信框架,提供了一种高性能、异步事件驱动的编程模型。在Netty中,可以使用同步方式来读取客户端发送的内容。 为了实现同步读取客户端内容,需要完成以下几个步骤: 1. 创建一个ServerBootstrap对象,并进行一系列的配置,包括设置线程模型、指定端口号等。 2. 创建一个ChannelPipeline对象,并设置用于处理网络消息的ChannelHandler链。在这个链中,需要添加一个用于读取客户端消息的ChannelInboundHandler。 3. 在ChannelInboundHandler中,可以通过重写channelRead方法来处理接收到的客户端消息。在这个方法中,可以通过channel参数获取到客户端发送的具体内容。 4. 调用Bootstrap的bind方法,将服务器绑定到指定的端口,开始监听客户端连接。 5. 当有客户端连接进来Netty会自动调用ChannelInboundHandler的channelRead方法,并将接收到的消息作为参数传递给这个方法。我们可以在这个方法中进行同步读取客户端内容的处理逻辑。 6. 在channelRead方法中,可以通过调用ChannelHandlerContext的write方法将响应消息回写给客户端。 通过上述步骤,Netty可以实现同步读取客户端内容。当有客户端连接进来,服务器会自动触发相应的事件,并将接收到的消息传递给ChannelInboundHandler。在这个处理器中,我们可以同步地读取和处理客户端发送的内容,并将响应消息返回给客户端Netty强大的异步事件驱动模型,使得同步读取客户端内容的实现变得简单而高效。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值