默认
发表评论 9
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 用netty版MobileIMSDK发送消息,回调里收到sender是null?
你好,我用netty跑的服务,java客户端,
客户端代码如下:
public static void main(String[] args) throws Exception {
        // 设置AppKey
        ConfigEntity.appKey = "5418023dfd98c579b6001741";
        // 设置服务器ip和服务器端口
        ConfigEntity.serverIP = "192.168.2.76";
        ConfigEntity.serverUDPPort = 7901;

        ClientCoreSDK.getInstance().setChatBaseEvent(new ChatBaseEventImpl());
        ClientCoreSDK.getInstance().setChatTransDataEvent(new ChatTransDataEventImpl());
        ClientCoreSDK.getInstance().setMessageQoSEvent(new MessageQoSEventImpl());

//        new LocalUDPDataSender.SendLoginDataAsync("receiver", "123456"){
//            @Override
//            protected void fireAfterSendLogin(int code)
//            {
//                if(code == 0)
//                    System.out.println("数据发送成功!");
//                else
//                    System.out.println("数据发送失败。错误码是:"+code+"!");
//            }
//
//        }.execute();

        new LocalUDPDataSender.SendLoginDataAsync("sender", "123456"){
            @Override
            protected void fireAfterSendLogin(int code)
            {
                if(code == 0)
                    System.out.println("数据发送成功!");
                else
                    System.out.println("数据发送失败。错误码是:"+code+"!");
            }

        }.execute();

        new LocalUDPDataSender.SendCommonDataAsync("这是一条测试信息...", "receiver"){
            @Override
            protected void onPostExecute(Integer code)
            {
                if(code == 0)
                    System.out.println("数据已成功发出!");
                else
                    System.out.println("数据发送失败。错误码是:"+code+"!");
            }
        }.execute();

    }
分别建立sender,receiver,用sender发了一个消息,打印的log:fingerPrintOfProtocal:322fdbfd-04fd-4a5e-9d31-eb464569b6a0, 收到来自用户: null的消息:这是一条测试信息...,
服务端的log:DEBUG_回调通知】[typeu=-1]收到了客户端null发给客户端receiver的消息:str=这是一条测试信息... | (ServerEventListenerImpl^onTransBuffer_C2C_CallBack:130)

无法显示sender的id,在回调方法onTransBuffer_C2C_CallBack.

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

上一篇:[已回复] 用了MobieIMSDK后的数据库解决方案怎么实现?下一篇:[已回复] 求教服务端MobileIMSDK和spring boot服务冲突的问题
推荐方案
评论 9
你这代码怎么这么诡异,客户端代码怎么用的也是服务端?你把你的客户端和服务端工程分别截图给我看看,我看你怎么玩的?搞不好又是在瞎搞了。。。
引用:JackJiang 发表于 2019-01-16 10:48
你这代码怎么这么诡异,客户端代码怎么用的也是服务端?你把你的客户端和服务端工程分别截图给我看看,我看 ...

我服务端直接用的demo起的,客户端直接照着http://www.52im.net/thread-59-1-1.html上写的

1547607208278.jpg (86.06 KB, 下载次数: 2225)

1547607208278.jpg
引用:echo1248 发表于 2019-01-16 10:54
我服务端直接用的demo起的,客户端直接照着http://www.52im.net/thread-59-1-1.html上写的

一个完整的长连接应用,第一步就是login(其实它的后台逻辑就是登陆认证+网络长连接的建立),你这代码是怎么登陆的?
我感觉你没有理解,有点瞎写的意思。你先把demo顺着登陆逻辑往下读一遍,理一理思路
引用:JackJiang 发表于 2019-01-16 10:57
一个完整的长连接应用,第一步就是login(其实它的后台逻辑就是登陆认证+网络长连接的建立),你这代码是 ...

我是分别建立了两个client(sender,receiver),sender模拟发送方,receiver模拟接收方,这个代码中,我先注释了sender,用receiver先login,然后用sender 先login,再sendCommonDataAsync。在日志中receiver,可以收到消息。
引用:echo1248 发表于 2019-01-16 11:10
我是分别建立了两个client(sender,receiver),sender模拟发送方,receiver模拟接收方,这个代码中,我 ...

同一个工程里建立 两个客户端?
引用:JackJiang 发表于 2019-01-16 11:23
同一个工程里建立 两个客户端?

代码写在一起,我先注释sender,起一个receiver,再注释reciever,起一个sender的,在两个进程里面,日志上面receiver客户端是收到了消息的,只是对发送方的user_id 显示为null,其他信息都可以看到。
引用:echo1248 发表于 2019-01-16 12:12
代码写在一起,我先注释sender,起一个receiver,再注释reciever,起一个sender的,在两个进程里面,日志 ...

不清楚你是什么思路,但无论如何,没有理由同一个实例里开2个客户端,也是行不通的。

另外,建议你要实现什么,直接在demo的基础上改吧,这样就不会出现这种原理的问题了。
引用:JackJiang 发表于 2019-01-16 12:14
不清楚你是什么思路,但无论如何,没有理由同一个实例里开2个客户端,也是行不通的。

另外,建议你要 ...

解决了,我在sender那个进程中,login之后threed.sleep(5000),之后发送消息就可以显示了,估计发送消息太快的缘故,谢谢啦,我再继续研究研究
引用:echo1248 发表于 2019-01-16 13:09
解决了,我在sender那个进程中,login之后threed.sleep(5000),之后发送消息就可以显示了,估计发送消息 ...

我表示很蒙逼。。。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部