workerman开发的客服系统发生消息丢失的情况

chosen1cwp

用workerman开发了客服系统之后,在进行测试的时候,数据偶尔会发生丢失的情况,event.php中的onmessage方法中,

$msg = JsonProtocol::decode($message);
if( Gateway::isOnline($msg) ) {
    Db::query("INSERT INTO `chat_message` VALUES(null, '" . $uid . "', '" . $msg . "', '" . $msg . "', " . time() . ", 1, 0)");

    $bk = array(
        'code' => 200,
        'type' => 'chat',
        'from_uid' => $uid,
        'to_uid' => $msg,
        'content' => $msg,
        'time' => time()
    );
    return Gateway::sendToUid($msg, JsonProtocol::encode($bk));
}

先判断接收方的uid通信通道是否存在,存在就把消息插入数据库,然后把消息发给接收方uid 。但是数据库中消息存入成功了,客服缺没有接收到消息?这种问题只是偶尔发生,匪夷所思,还望大侠解答?在这里谢谢了

阅读 3258
1个回答

walkor

这个问题没遇到过,无现在无法给你定位

你那边看下能否重现这个问题,然后找我定位吧

  • chosen1cwp 2014-08-29

    这个我也很纳闷,昨天实在公司内部测试的,没遇到过这个问题,今天上午做了远程的客服访客聊天测试,就出现这个问题。可是下午我自己找个朋友远程测试时就是好的。我在想是不是应该在客户端做个处理,每次客户端接收到来自服务器的数据都返回200,看是服务器给客户端推送消息时出错,还是客户端接收到数据了但是显示的时候出错,目前大概判断是在服务器给客户端推送的过程中出现了错误,出现了丢失的情况。