前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Netty·一对一发送消息

Netty·一对一发送消息

作者头像
数媒派
发布2022-12-01 15:12:38
3920
发布2022-12-01 15:12:38
举报
文章被收录于专栏:产品优化

消息发送

一对一发送消息

代码语言:javascript
复制
// 1.拿到消息发送方的会话信息
Session session = SessionUtil.getSession(ctx.channel());

// 2.通过消息发送方的会话信息构造要发送的消息
MessageResponsePacket messageResponsePacket = new MessageResponsePacket();
messageResponsePacket.setFromUserId(session.getUserId());
messageResponsePacket.setFromUserName(session.getUserName());
messageResponsePacket.setMessage(messageRequestPacket.getMessage());

// 3.拿到消息接收方的 channel
Channel toUserChannel = SessionUtil.getChannel(messageRequestPacket.getToUserId());

// 4.将消息发送给消息接收方
if (toUserChannel != null && SessionUtil.hasLogin(toUserChannel)) {
  toUserChannel.writeAndFlush(messageResponsePacket);
} else {
  System.err.println("[" + messageRequestPacket.getToUserId() + "] 不在线,发送失败!");
}

对组发送消息

代码语言:javascript
复制
// 1. 创建一个 channel 分组
ChannelGroup channelGroup = new DefaultChannelGroup(ctx.executor());

// 2. 筛选出待加入群聊的用户的 channel 和 userName
for (String userId : userIdList) {
  Channel channel = SessionUtil.getChannel(userId);
  if (channel != null) {
    channelGroup.add(channel);
    userNameList.add(SessionUtil.getSession(channel).getUserName());
  }
}

// 3. 创建群聊结果的响应
CreateGroupResponsePacket createGroupResponsePacket = new CreateGroupResponsePacket();
createGroupResponsePacket.setSuccess(true);
createGroupResponsePacket.setGroupId(IDUtil.randomId());
createGroupResponsePacket.setUserNameList(userNameList);

// 4. 给每个客户端发送拉群通知
channelGroup.writeAndFlush(createGroupResponsePacket);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 消息发送
    • 一对一发送消息
      • 对组发送消息
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档