在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  HTML/ 求解socket的一些問題和思路?

求解socket的一些問題和思路?

第一次整這個socket, socket使用還是蠻簡單,但是......,最近遇到了各種問題,整個人已經凌亂了,不知道怎么下手了.....

服務端為node;

業(yè)務需求是這樣的:一共有A、B兩個客戶端,A端調API告訴服務端當前進度,服務端接到后又把進度推送給B端,B端根據(jù)推送過來的進度顯示相應的數(shù)據(jù)!下面是B端的部分代碼:

//應為一些情況導致要創(chuàng)建兩個鏈接
let token = cache.getToken();
if(!token)return;
ctx.state.socketStatus = true;
if(socket_private_1 && !socket_private_1.connected){
    socket_private_1.connect();
    socket_private_2.connect();
}
if(!socket_private_1){
    socket_private_1 = io.connect(Cfg.push2 + 'service-cs',{
        path: '/socket.service',
        transports:['websocket'],
        query: 'token=' + token,
        reconnectionDelay:1000,
        forceNew: true
    });
    socket_private_2 = io.connect(Cfg.push1 + 'app-cs',{
        path: '/socket.app',
        transports:['websocket'],
        query: 'token=' + token,
        reconnectionDelay:1000,
        forceNew: true
    });
    /*
        pushEvent_1和pushEvent_2都包含了socket客戶端的基本事件(鏈接、斷開等)
    */
    events(socket_private_1,pushEvent_1,ctx,'private_1');
    events(socket_private_2,pushEvent_2,ctx,'private_2');
}

需求還是相當簡單的,但是整個一個多星期還是各種問題,最頭痛的就是經常斷開,也未報錯......,有時候(偶爾)服務端能看到我已離線,但是客戶端卻沒有觸發(fā)任何disconnect等事件....真的是多災多難啊,總之最終的 、 最頭痛的 、 結果就是 -- 經常收不到推送.....!
想問下大佬們平常使用socket都做那些設置? 主要那些東西?
然后目前有個bug,就是如果B端在某段時間斷網(wǎng)了(socket斷開了),那么就接收不到推送,但是A端流程已經走完了.....! 目前我想的解決辦法就是 服務端在推送給B端后B端接收到了立馬返回服務端,然后服務端再告訴A端,這樣一個流程才算走完,只有B端接收到并反饋A端才能繼續(xù)往下走...???? 大佬們應該怎么搞?

另外如果采用極光的話是否可以不用socket?

回答
編輯回答
獨白

建議采用心跳反射這樣的方法.
由客戶端發(fā)出請求.
因為按照現(xiàn)在請求的方法,當客戶端發(fā)出請求后,
會建立臨時的鏈路,當這個鏈路因為種種原因斷開的時候,服務器就找不到客戶端了....

2017年8月16日 17:14