function callBack_processC2COfflineMessage(p){ logger.info('[应用层-回调] 客户端C2C消息实时发送没成功,需要做离线消息处理(%s)', JSON.stringify(p)); contentCheck(p, 2); }
来源:即时通讯网 - 即时通讯开发者社区!
轻量级开源移动端即时通讯框架。
快速入门 / 性能 / 指南 / 提问
轻量级Web端即时通讯框架。
详细介绍 / 精编源码 / 手册教程
移动端实时音视频框架。
详细介绍 / 性能测试 / 安装体验
基于MobileIMSDK的移动IM系统。
详细介绍 / 产品截图 / 安装体验
一套产品级Web端IM系统。
详细介绍 / 产品截图 / 演示视频
引用此评论
引用:JackJiang 发表于 2017-09-18 15:07 这应该是没设置好回调函数,你把设置“imServerSDK.setCallBack_processC2COfflineMessage(callBack_proces ...
var app = require('../app'); //var debug = require('debug')('TalkM_WebIM:server'); var http = require('http'); //var http = require('https'); var fs = require('fs'); const options = { key: fs.readFileSync('./ca/daliao.key'), ca: fs.readFileSync('./ca/daliao.pem'), cert: fs.readFileSync('./ca/daliao.pem'), ciphers: ['ECDHE-RSA-AES128-GCM-SHA256','ECDHE','ECDH','AES,HIGH','!NULL','!aNULL','!MD5','!ADH','!RC4'].join(':'), }; var config = require('../j_conf/config'); var imConfig = require('../j_conf/config'); var common = require('../j_common/common'); var logger = require('../j_conf/log').logger; /** ----------------------------------------------------------------------------------- * Get port from environment and store in Express. */ var port = common.normalizePort(process.env.PORT || '3000'); app.set('port', port); /** ----------------------------------------------------------------------------------- * Create HTTP server. */ var server = http.createServer(app); //var server = http.createServer(options, app); /** ----------------------------------------------------------------------------------- * Create WebSocket server. */ // 设置要连接的MQ消息中间件URL地址 imConfig.im_mq_server_url = IMMQ_IMBRIDGE_URL; // var imServerSDK = require('../j_imserver_sdk/im-server-sdk'); // 创建服务端的IM SDK管理实例 imServerSDK.createServer(server); // 设置连接认证回调 imServerSDK.setCallBack_checkAuthToken(callBack_CheckAuthToken); // 设置用户上线回调 imServerSDK.setCallBack_userOnline(callBack_userOnline); // 设置用户离线回调 imServerSDK.setCallBack_userOffline(callBack_userOffline); // 设置C2S消息回调 imServerSDK.setCallBack_receivedC2SMessage(callBack_receivedC2SMessage); // 设置C2C消息回调 imServerSDK.setCallBack_transferedC2CMessage(callBack_transferedC2CMessage); // 设置离线消息处理回调 imServerSDK.setCallBack_processC2COfflineMessage(callBack_processC2COfflineMessage); // 设置个人认证后信息的处理回调 imServerSDK.setCallBack_authedInfo(callBack_authedInfo); var userP = require("../j_imserver_sdk/user-processor"); var userPObj = new userP();
function _init(){ /** ----------------------------------------------------------------------------------- * 启动MQ中间件服务(开启桥接跨服消息的处理). */ // 需要与APP版的互通 if (config.im_bridge_enabled) { // 设置MQ桥接消息回调:以下回调函数将在nodejs端的MQProvider中当收到MQ的消息时进行回调,应用层通过此回调来进行消息转发处理 // 本回调的返回值说明:true表示此消息正确处理完成,false表示未成功处理(MQ会将原消息重放回队列以便下次再取到)。 imMQProvider.setCallBack_forWork(function (p) { try { // 如果nodejs端通过桥接(收到的是APP端发过来的消息)收到的消息不为空则尝试在本nodejs机器发送(给用户) if (p) { logger.debug('[IMSDK-MQ↓]【桥接收】callBack_forWork回调中收到Protocal对象:[%s], 马上通过本机的WebIM发送之!' , JSON.stringify(p)); // 发送消息(此方法内的sendData实际上会通过回调处理在线和不在线的情况,只管调用就是了) // ## Bug fixed by js 20160922: 之前错误地把p.to写成了p.toLocalString而导致收消息时 // ## - 出现"RabbitMQ Error Code 504"(原因是错误地代码使得sendProtocalForOnlineOrOffline发生异常, // ## - 因没有try catch而蔓延至MQProvider里的处理代码)! //sendDataLocal4OnlineOrOffline(userProcessor.getSession(p.to), p); sendDataLocal4OnlineOrOffline(null, p, null);// 因为桥接消息是由服务端代码,所以第一个参数(发送者的socket引用)自然填null return true; } else { logger.error('[IMSDK-MQ↓]【桥接收】callBack_forWork回调中收到无效的Protocal对象:%s,【本条处理没有继续】', JSON.stringify(p)); //return false; return true;// 【注意】尽量不要返回false,不然消息被放回队列后容易死循环,出错作好记录备查即可! } } catch (e) { logger.error('[IMSDK-MQ↓]【桥接收】callBack_forWork回调中出错了,消息内容:[%s],错误原因:[%s]【本条处理没有继续】' , JSON.stringify(p), JSON.stringify(e)); return true;// 【注意】尽量不要返回false,不然消息被放回队列后容易死循环,出错作好记录备查即可! } }); // 启动MQ中件件服务 imMQProvider.start(); logger.info("[IMSDK] 配置项:已开启与MobileIMSDK APP的互通【ok】."); } else{ logger.info("[IMSDK] 配置项:未开启与MobileIMSDK Web的互通【no】."); }
引用:heavenK 发表于 2017-09-18 15:13 我这块的代码好像是当时你传给我的WEB端的样例的www.js改的。我没调整过顺序。
引用:JackJiang 发表于 2017-09-18 15:22 OK,我知道你的问题了,你是不是在服务端调用sendData方法发送数据出现的这个提示?
引用:heavenK 发表于 2017-09-18 15:27 我这面就是进行的客户端发消息到客户端的操作。
引用:JackJiang 发表于 2017-09-18 15:51 你的意思是,你基本上没有改过web端的代码,现在做的操作是app通过桥接发送到web端时给出的提示?
引用:heavenK 发表于 2017-09-18 16:26 嗯,我就是在每个回调方法里加一些我自己的保存数据库的相关操作。然后把http改成了https,其它没怎么动 ...
引用:JackJiang 发表于 2017-09-18 16:39 问题已经核实了,这是MobileIMSDK-Web版的一个bug,影响的版为v3.1.0及之前的版本,此问题将在v3.2.0的发 ...
精华主题数超过100个。
连续任职达2年以上的合格正式版主
为论区做出突出贡献的开发者、版主等。
Copyright © 2014-2024 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.109375 second(s), 35 queries , Gzip On.