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

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

View File

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