引用: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互通准备的。 |