引用:401523591 发表于 2018-04-08 20:20 你单开一贴,把web那边的log抓的全面一点,别贴个牛皮癣一小块,没办法看全。 其它客户用起来很稳定,不会发生提示掉线的问题,估计又是搞出什么问题了。 |
引用:JackJiang 发表于 2018-03-29 12:11 有个问题,web端的用户在发送消息时,总是提示掉线了,是什么原因造成的呢 |
| 有个问题,web端的用户在发送消息时,总是提示掉线了,是什么原因造成的呢 |
引用:401523591 发表于 2018-03-29 11:04 ServerLauncherImpl.getInstance().getServerCoreHandler().getBridgeProcessor();这个方法是没有的,需要自己去写吗 |
引用:401523591 发表于 2018-03-30 11:48 你可以仔细看看方法的说明,写的很详细。 你处理完MQ消息的返回值,决定了MQ中会不会把这条消息给去掉。。 |
引用:JackJiang 发表于 2018-03-29 11:08 我现在调用了s2c的方式,在web端会收到多条消息,并且是隔一小会之后又收到一条,是什么情况呢 |
引用:JackJiang 发表于 2018-03-29 12:11 ok,了解了,谢谢 |
| ok,了解了,谢谢 |
引用:401523591 发表于 2018-03-29 11:52 MobileIMSDK-Web端那边,同样有函数,你看看下下面这个例子(跟3楼的是同样的逻辑,只是这里是Web端的实现): /**
* 将客服分配成功分配到访客的消息以指令的方式由服务端发给访客,以便对方UI上显示提示内容。
*
* @param csid 为其服务的客服id
* @param visitorUserId 要通知的访客id
* @param serviceRecordId 本次接入对应的客服服务记录id号
* @returns {*} true表示指令发送成功
*/
function sendGetNextVisitorResultToVisitor(csid, visitorUserId, serviceRecordId, switchedFrom){
var data = {};
data.csid = csid;
data.serviceRecordId = serviceRecordId;
data.switchfrom = (switchedFrom==null)?"":switchedFrom;
// 由服务端将此指令发送给对应的客服端(所以from='0'、to=csid)
var p = ProtocalFactory.createCommonDataU(
JSON.stringify(data),
'0', visitorUserId,
MsgType.S_USER_CMD_TYPE_GET_NEXT_VISITOR_RESULT // 注意:跟对访客的反馈用的同一个类型id
);
// 由服务端将此指令发送给对应的客服端(所以from='0'、to=csid)
var ok = imServerSDK.publicSendDataGlobal(
null
, p
, null // null表示使用默认的离线消息处理:按普通聊天消息的处理逻辑进行可能的
// 离线处理(即接收方如果在线没有收到,下次上线可以作为离线消息给拉过去)
);
return ok;
} |
| web客户端怎么给移动端和web端的群发消息 |
引用:401523591 发表于 2018-03-29 11:04 你的方法调用错了,你看看MobileIMSDK的API文档的说明,并再回头看看我贴在3楼的代码样例(仅供参考):
|
|
你刚才在另一个帖子里说的,每次只有一个人能收到,那肯定是哪里用的不对。 因为GlobalSendHelper里的sendS2C这个方法,就是一个一个送过去的,不可能能收到,却只有一个人。 你可以把你的代码贴上来看看。 比如,另一个项目中,要向访客(访客可能登陆在Web端)发送数据,那么调用GLoabalSendHelper.sendS2C方法就行了,这个方法会自动判断接收者 在MobileIMSDK APP这边还是MobileIMSDK-Web那边,如果在MobileIMSDK-Web那边,那么这条数据会在MobileIMSDK-Web那边的桥接消息回调里收到,比如这段代码是下面这样:
/**
* 将客服分配成功分配到访客的消息以指令的方式由服务端发给访客,以便对方UI上显示提示内容。
*
* @param csid 为其服务的客服id
* @param visitorUserId 要通知的访客id
* @param serviceRecordId 本次接入对应的客服服务记录id号
* @returns {*} true表示指令发送成功
*/
private boolean sendGetNextVisitorResultToVisitor(String csid, String visitorUserId, String serviceRecordId)
{
GetNextVisitorResultToVisitor gvrv = new GetNextVisitorResultToVisitor();
gvrv.setCsid(csid);
gvrv.setServiceRecordId(serviceRecordId);
// 构造要发送的Protocal:由服务端将此指令发送给对应的客服端(所以from='0'、to=csid)
Protocal p = ProtocalFactory.createCommonData(
// dataContent的内容
g.toJson(gvrv)
, "0", visitorUserId, true, Protocal.genFingerPrint()
// 注意:跟对访客的反馈用的同一个类型id
, UserMessageType.TYPE_CMD_S_GET_NEXT_VISITOR_RESULT);
boolean ok = false;
try
{
// 发送数据(如果接收者在本机在线列表,则发送本机列表,否则发送至桥接中间件)
// FIXME: 第二阶段的集群实现后,跨服消息的发送将不需要使用这种非此即彼的逻辑了
ok = GlobalSendHelper.sendDataS2C(
ServerLauncherImpl.getInstance().getServerCoreHandler().getBridgeProcessor()
, p);
}
catch (Exception e)
{
logger.info("【IM_回调通知】 服务端向访客"+ visitorUserId +"发送\"接入下一个访客\"结果时出错了", e);
}
|
| 你看看GlobalSendHelper这个类,它就是为了跟MobileIMSDK-Web互通准备的。 |