用workerman開發(fā)了客服系統(tǒng)之后,在進(jìn)行測試的時候,數(shù)據(jù)偶爾會發(fā)生丟失的情況,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通信通道是否存在,存在就把消息插入數(shù)據(jù)庫,然后把消息發(fā)給接收方uid 。但是數(shù)據(jù)庫中消息存入成功了,客服缺沒有接收到消息?這種問題只是偶爾發(fā)生,匪夷所思,還望大俠解答?在這里謝謝了
這個問題沒遇到過,無現(xiàn)在無法給你定位
你那邊看下能否重現(xiàn)這個問題,然后找我定位吧
這個我也很納悶,昨天實在公司內(nèi)部測試的,沒遇到過這個問題,今天上午做了遠(yuǎn)程的客服訪客聊天測試,就出現(xiàn)這個問題。可是下午我自己找個朋友遠(yuǎn)程測試時就是好的。我在想是不是應(yīng)該在客戶端做個處理,每次客戶端接收到來自服務(wù)器的數(shù)據(jù)都返回200,看是服務(wù)器給客戶端推送消息時出錯,還是客戶端接收到數(shù)據(jù)了但是顯示的時候出錯,目前大概判斷是在服務(wù)器給客戶端推送的過程中出現(xiàn)了錯誤,出現(xiàn)了丟失的情況。