diff --git a/src/com/zchd/zim/ImChatWebSocket.java b/src/com/zchd/zim/ImChatWebSocket.java index ead4633..9ca460b 100644 --- a/src/com/zchd/zim/ImChatWebSocket.java +++ b/src/com/zchd/zim/ImChatWebSocket.java @@ -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 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; diff --git a/src/com/zchd/zim/ImMessageMonitor.java b/src/com/zchd/zim/ImMessageMonitor.java index adbec10..73699a5 100644 --- a/src/com/zchd/zim/ImMessageMonitor.java +++ b/src/com/zchd/zim/ImMessageMonitor.java @@ -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() { @@ -93,8 +91,6 @@ public class ImMessageMonitor extends BaseService { // 取消点对点订阅 zhub.unsubscribe("im:friend:" + userid); - // 推送离线状态 - zhub.publish("im:offline", chatService.getGuserid(userid)); // 取消频道订阅 List list = chatService.userChannels(userid);