7-27这个测试环节中的问题
来源:7-27 IM系统的ACK机制测试
光_cfstOQ
2025-09-22
在测试环节中
JSONObject jsonObject = JSONObject(); jsonObject.put(, userId); jsonObject.put(,objectId); jsonObject.put(,content); bizBody.setData(JSON.(jsonObject));
这个objectId 在后面调用到的RouterHandlerServiceImpl中的sendMsgToClient方法,里面并没有做userid的校验,也就是说 每次发送 都是给userId发送,也就是自己给自己发送数据,并没有真正给objectId发送数据 这个是测试数据的过程中的bug吧,老师你的实例 是怎么做到userId 给objectId客户端发送数据 objectId又能收到数据的?
(ImMsgBody imMsgBody) {
Long userId = imMsgBody.getUserId();
ChannelHandlerContext ctx = ChannelHandlerContextCache.(userId);
(ctx != )
{
String msgId = UUID.().toString();
imMsgBody.setUserId(userId);
ImMsg respMsg = ImMsg.(ImMsgCodeEnum..getCode(), JSON.(imMsgBody));
ctx.writeAndFlush(respMsg);
;
}
;
}这里的userId 永远都是发送者的Id啊 并没有从这个data中获取objectId这个动作 我不知道你的代码是怎么实现userId 给objectId 发送数据的
System..println(); String content = scanner.next(); ImMsgBody bizBody = ImMsgBody(); bizBody.setAppId(AppIdEnum..getCode()); bizBody.setUserId(userId); bizBody.setBizCode(); JSONObject jsonObject = JSONObject(); jsonObject.put(, userId); jsonObject.put(,objectId); jsonObject.put(,content); bizBody.setData(JSON.(jsonObject)); ImMsg heartBeatMsg = ImMsg.(ImMsgCodeEnum..getCode(), JSON.(bizBody)); userIdChannelMap.get(userId).writeAndFlush(heartBeatMsg);
写回答
1回答
-
Danny_Idea
2025-09-24
这里只是演示一个发消息经过im服务器,然后再由im服务器响应数据回来的这么个链路,这里你可以开两个client来模拟相互通信,原理都是一样的。
00
相似问题