默认
发表评论 3
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 求教RainbowChat-Web服务端chatServer 登录监听不响应
服务端im 长连接监听中,前端用户登录监听不回调!!!!!


public class ChatServerEventListener implements ServerEventListener
{
        private static ChatServerEventListener instance = null;
        
        private final Gson g = new Gson();
        
        /** 在线用户管理器 */
        private UsersStatusManager liverUsersMgr = null;
        /** 聊天服务逻辑管理器(除群聊天) */
        private ChatLogicManager chatLogicMgr = null;
        /** 聊天服务逻辑管理器(群聊专用) */
        private ChatLogicManager4Group groupChatLogicMgr = null;
        
        public static ChatServerEventListener getInstance()
        {
                if(instance == null)
                        instance = new ChatServerEventListener();
                return instance;
        }
        
        
                /**
         * 用户的IM连接/登陆请求验证成功后的回调方法定义(即:上线通知).
         * <p>
         * 服务端的应用层通常可在本方法中实现用户上线通知等。
         * <br>
         * 注意:本回调在一种特殊情况下——即用户实际未退出登陆但再次发起来登陆包时,回调也是一定会被调用。
         *
         * @param userId 传递过来的准一id,保证唯一就可以通信,可能是登陆用户名、也可能是任意不重复的id等,具体意义由业务层决定
         * @param extra 额外信息字符串。本字段目前为保留字段,供上层应用自行放置需要的内容。为了丰富应用层处理的手段,在本回调中也把此字段传进来了
         * @param session 成功登陆后建立的MINA会话
         */
        @Override
        public void onUserLoginAction_CallBack(String userId, String extra, IoSession session)
        {
                LoggerFactory.getLog().info("[RBChat]用户连接IM服务器成功--用户ID:" + userId + ",远程IP:"
                                + session.getServiceAddress().toString());
                chatLogicMgr.processUserLoginAction(userId, extra, session);
        }

        
        
        }



前端用户登录成功后:
ServerEventListener.onUserLoginAction_CallBack
方法不回调

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

推荐方案
评论 3
RainbowChat-Web的用户上下线通知,在node那边工程中的www.js文件中有回调通知,不是在http工程这边。
引用:JackJiang 发表于 2024-08-06 15:29
RainbowChat-Web的用户上下线通知,在node那边工程中的www.js文件中有回调通知,不是在http工程这边。


[size=13.0667px]LocalSendHelper  类的
[size=13.0667px]sendData(OnlineProcessor.getInstance().getOnlineSession(p.getTo()), p, resultObserver);
[size=13.0667px]服务端接收到消息后,会去查看这个用户是否有session 的登录记录,[size=13.0667px]session[size=13.0667px] 为空[size=13.0667px]会走离线消息

[size=13.0667px]

按照现在的逻辑,这里永远只会走离线消息,那在线消息我怎么获取?目前无法获取在线消息,导致消息记录无法保存,web端刷新页面,聊天记录就消失了。


引用:Daniel1212 发表于 2024-08-06 15:41
LocalSendHelper  类的
sendData(OnlineProcessor.getInstance().getOnlineSession(p.getTo()), p, re ...

1)你具体是在做什么样的需求?

2)你的客户端是否只有RainbowChat-Web的网页商在?有没有实现跟RainbowChat APP产品的互通?

3)聊天记录不见,是因为你的RainbowChatMQServer没有部署或启动,它的作用就是消息记录落库,去检查一下。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部