默认
发表评论 13
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MobileIMSDK v3.0 的Web版与APP版群聊的问题

我用WAP端与APP端单聊现在是没有问题的,通过RabbitMQ现在可以互相通信。


       APP端发送的信息经过WAP的服务器推给了WAP客户端。


       但我现在开始弄群聊通讯时发现,APP发送接收ID为0的消息时,WAP端服务器接收不到信息。在APP服务端使用sendData函数发送的消息在WAP端接收不到。这种情况应该怎么处理呢?



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

标签:MobileIMSDK
上一篇:[已回复] MobileIMSDK 移动端登上IM服务器后频繁登入和登出下一篇:[已回复] 关于关闭MobileIMSDK服务端的问题

本帖已收录至以下技术专辑

推荐方案
评论 13
引用:JackJiang 发表于 2017-06-27 18:36
MobileIMDK-Web版同样有的,而且必须得有,看我的截图(函数有详细注释和API说明):

好的,多谢您的细心回复。

,

引用:heavenK 发表于 2017-06-27 16:24
好的,我改一下试试看。现在基本能进行APP发WAP收的群聊了。正在弄WAP发APP收消息的功能 。WAP的服务端也 ...

MobileIMDK-Web版同样有的,而且必须得有,看我的截图(函数有详细注释和API说明):
[已回复] MobileIMSDK v3.0 的Web版与APP版群聊的问题_QQ截图20170627184627.png
引用:JackJiang 发表于 2017-06-27 11:09
你不应该使用new Protocal()的方式生成Protocal对象,应该使用ProtocalFactory.create.... 这里的方法, ...

好的,我改一下试试看。现在基本能进行APP发WAP收的群聊了。正在弄WAP发APP收消息的功能 。WAP的服务端也有GlobalSendHelper.sendS2C这类方法吗?
引用:heavenK 发表于 2017-06-27 09:14
我现在给type设置成2倒是APP和WAP的用户都能同时收到消息了。

你不应该使用new Protocal()的方式生成Protocal对象,应该使用ProtocalFactory.create.... 这里的方法,然后在这里的方法里指明你的typeu(就是你自已定义的协议类型)就好了。Protocal对象的构造方法并不推荐直接使用。
我现在给type设置成2倒是APP和WAP的用户都能同时收到消息了。
引用:JackJiang 发表于 2017-06-26 16:58
在你的应用层通过这段代码拿到BridgerProcessor:ServerLauncherImpl.getInstance().getServerCoreHandle ...

使用GlobalSendHelper确实能发送过去了。但是Protocal(int type, java.lang.String dataContent, java.lang.String from, java.lang.String to) 这个函数的第一个字段写的协议类型应该设置成什么呢?我从文档里看到说不建议用户自行使用。
引用:heavenK 发表于 2017-06-26 16:01
我在文档里看到这个方法了,但它的第一个参数BridgeProcessor这个应该怎么定义呢?

在你的应用层通过这段代码拿到BridgerProcessor:ServerLauncherImpl.getInstance().getServerCoreHandler().getBridgeProcessor(),因为为了让服务端的几个核心类能够灵活地被开发者继承和重用,所以这个BridgerProcessor在底层没有更优雅的方法拿到,所以需要通过应用层来告诉GlobalSendHelper.sendS2C(..)这样的方法。

[已回复] MobileIMSDK v3.0 的Web版与APP版群聊的问题_QQ图片20180112163448.png
API文档点此进入
引用:JackJiang 发表于 2017-06-26 15:40
懂你的意思了,你的逻辑是对的,但LocakSendHelper是只能发送本实例的用户,用在不需要互通的情况下。在 ...

我在文档里看到这个方法了,但它的第一个参数BridgeProcessor这个应该怎么定义呢?
引用:heavenK 发表于 2017-06-26 14:36
没太明白,我现在的过程是:
APP客户端IOS用户A,APP服务端S1,WAP客户端用户B,WAP服务端S2,未登录用 ...

懂你的意思了,你的逻辑是对的,但LocakSendHelper是只能发送本实例的用户,用在不需要互通的情况下。在开启互通的情况下,你应该用:GlobalSendHelper.sendDataS2C(..)这个方法。
引用:JackJiang 发表于 2017-06-26 14:26
你的群组消息这样发的思路是不对的,因为以后要做集群的话也是一个道理。

你应该这么考虑:你的群组消 ...

没太明白,我现在的过程是:
APP客户端IOS用户A,APP服务端S1,WAP客户端用户B,WAP服务端S2,未登录用户C,他们所在的群组为G。
用户A使用sendCommonData命令发送一条聊天信息给以接收ID为0的服务端。服务端S1收到消息后通过数据库查询到群组C里的所有用户A,B,C。过滤掉发送方A,未登录方C,对用户B使用LocalSendHelper.sendData命令发送A发出的消息。但我在S2上截获不到发送给B的消息,在B上也截获不到。
引用:heavenK 发表于 2017-06-26 11:26
是指群组聊天,不是世界频道。

你的群组消息这样发的思路是不对的,因为以后要做集群的话也是一个道理。

你应该这么考虑:你的群组消息通过消息发送人所连接的IM服务端实例,拿到他所要发送的目标群组所对应的所有成员,并由消息发送人所连接的IM服务端实例推给所有接收人,至于接收人真正连接的是哪个IM服务端实例,这就是底层自已去决定,你只管发送就可以了。
引用:JackJiang 发表于 2017-06-26 11:11
你说的群聊是指群组聊天吗?而不是RainbowChat里的世界频道是吗?

是指群组聊天,不是世界频道。
你说的群聊是指群组聊天吗?而不是RainbowChat里的世界频道是吗?
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部