修改:用户上下线事件推送

This commit is contained in:
绝尘 2024-07-26 19:17:05 +08:00
parent df343d2731
commit 0998501c93
2 changed files with 9 additions and 5 deletions

View File

@ -6,6 +6,7 @@ import com.zchd.base.util.Utils;
import com.zchd.zim.entity.ChannelMessage; import com.zchd.zim.entity.ChannelMessage;
import com.zchd.zim.entity.FriendMessage; import com.zchd.zim.entity.FriendMessage;
import com.zchd.zim.entity.ImUser; import com.zchd.zim.entity.ImUser;
import net.tccn.zhub.ZHubClient;
import org.redkale.net.http.HttpRequest; import org.redkale.net.http.HttpRequest;
import org.redkale.net.http.RestOnMessage; import org.redkale.net.http.RestOnMessage;
import org.redkale.net.http.RestWebSocket; import org.redkale.net.http.RestWebSocket;
@ -31,6 +32,9 @@ public class ImChatWebSocket extends WebSocket {
@Resource(name = "int_cache") @Resource(name = "int_cache")
protected MyRedisCacheSource<Integer> intCache; protected MyRedisCacheSource<Integer> intCache;
@Resource(name = "zhub")
protected ZHubClient zhub;
@Resource @Resource
protected ImAccountService accountService; protected ImAccountService accountService;
@Resource @Resource
@ -75,6 +79,8 @@ public class ImChatWebSocket extends WebSocket {
final int userid = (int) getUserid(); final int userid = (int) getUserid();
getLogger().info("im:state-change:" + userid + "---ws connected---"); getLogger().info("im:state-change:" + userid + "---ws connected---");
intCache.setBit("im:user", userid, true); intCache.setBit("im:user", userid, true);
// 推送离线状态
zhub.publish("im:online:" + getAttribute("appid"), getAttribute("guserid"));
// 上线开启订阅 // 上线开启订阅
messageMonitor.online(userid); messageMonitor.online(userid);
// 拉取离线消息 // 拉取离线消息
@ -166,7 +172,9 @@ public class ImChatWebSocket extends WebSocket {
public CompletableFuture onClose(int code, String reason) { public CompletableFuture onClose(int code, String reason) {
final int userid = (int) getUserid(); final int userid = (int) getUserid();
getLogger().info("im:state-change:" + userid + "---close---" + code + "---" + reason); getLogger().info("im:state-change:" + userid + "---close---" + code + "---" + reason);
intCache.setBit("im:user:", userid, false); intCache.setBit("im:user", userid, false);
// 推送离线状态
zhub.publish("im:offline:" + getAttribute("appid"), getAttribute("guserid"));
// 取消用户订阅 // 取消用户订阅
messageMonitor.offline(userid); messageMonitor.offline(userid);
return null; return null;

View File

@ -74,8 +74,6 @@ public class ImMessageMonitor extends BaseService {
list.forEach(x -> { list.forEach(x -> {
subscribeChannel(userid, x.buildChannelid()); subscribeChannel(userid, x.buildChannelid());
}); });
// 推送上线状态
zhub.publish("im:online", chatService.getGuserid(userid));
// 开启对点订阅 // 开启对点订阅
zhub.subscribe("im:friend:" + userid, new TypeToken<FriendMessage>() { zhub.subscribe("im:friend:" + userid, new TypeToken<FriendMessage>() {
@ -93,8 +91,6 @@ public class ImMessageMonitor extends BaseService {
// 取消点对点订阅 // 取消点对点订阅
zhub.unsubscribe("im:friend:" + userid); zhub.unsubscribe("im:friend:" + userid);
// 推送离线状态
zhub.publish("im:offline", chatService.getGuserid(userid));
// 取消频道订阅 // 取消频道订阅
List<ChannelUser> list = chatService.userChannels(userid); List<ChannelUser> list = chatService.userChannels(userid);