網狐 socket修改成websocket注意


最近在修改網狐框架時,對底層socket改成websocket適合html5客戶端時遇到一個問題,首先在解決登錄服務器項目時,發現登錄驗證成功后,數據返回到html客戶端會崩潰,每次都蹦,調試代碼時發現,登錄服務器成功驗證后會發送多條信息順序發送給客戶端,然而這些信息中間會夾雜亂碼,一開始無論如何都找不到亂碼原因,從分析自己對網絡發包進行處理的那段代碼開始查,可問題依舊,最后的最后,發現當只啟動登錄服務器的時候,客戶端發送登錄信息,服務器返回多條成功信息,一切都ok了竟然!,然后,當打開中心服務器的時候,發現。。。登錄成功后,客戶端又close了,中間又出現了亂碼,由此推斷,是中心服務器搞的鬼,應該是在中心服那還有未處理的網絡模塊!坑哥啊

 

 

 

最后在發送消息出加上判斷,如果是web消息並且非json格式數據,返回

bool CServerSocketItem::SendData(void * pData, WORD wDataSize, WORD wMainCmdID, WORD wSubCmdID, WORD wRountID)
{
//TODO 底層確定發送方式,websocket直接發送,socket按照原來的封包發送
if (this->m_connectType == ConnectType_websocket){
//數據在上一層調度引擎層完成已經完成完成轉化,可以直接發送
//OutputDebugString("==========CServerSocketItem::SendData==========\n");
OutputDebugString((char *)pData);
OutputDebugString("\n==========CServerSocketItem::SendData==========\n");


char* resulData = new char[wDataSize + 1];
memcpy(resulData, pData, wDataSize);
resulData[wDataSize] = '\0';


std::string stResult = resulData;
Json::Reader readerJson;
Json::Value  valueJson;


if (readerJson.parse(stResult, valueJson))
{
//true  驗證通過,可發送
}
else{
return false;  //驗證失敗,不發送,返回
}

...

 

}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM