国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

請教一下大神websocket發(fā)送的數(shù)據(jù)會因延遲造成變化不?

daohu

假設前端有下面的語句

t=4;
socket.send(JSON.stringify({"t": t}));
t+=1;

后端會不會在網(wǎng)絡不好的情況下收到5?
該情況用在比如加鉆石數(shù)時,前端同步更新,后端會和前端發(fā)來的數(shù)值t=4進行比對,如果符合就+1,不符合就報作弊,現(xiàn)在誤報作弊的情況偶爾發(fā)生,但不是每次都發(fā)生,排查了很多問題,現(xiàn)在只能懷疑是這個了,像是因網(wǎng)絡不好造成了傳到后端的是5?如果是這個情況,一般通信中前端同步更新應該怎么做避免數(shù)據(jù)錯亂呢?

8292 2 0
2個回答

walkor 打賞

tcp會自己保證順序,所以同一個tcp連接發(fā)送的數(shù)據(jù)不會錯亂

  • daohu 2017-08-10

    好的,謝謝大神,那我再好好檢查下可能的其他原因

  • daohu 2017-08-10

    測了好久,還是會時不時的報錯,代碼邏輯又沒有找到問題,我現(xiàn)在推測和我服務端初始化時用了global去全局數(shù)據(jù)庫以及從數(shù)據(jù)庫讀取的一排數(shù)組存在變量里有關。當服務端收到傳過來的t==4時,global t,然后比較這兩個t是否相等,因為global失效t為null,所以數(shù)值不等,所以報錯。有沒有可能是global 失效造成的,大神?

walkor 打賞

進程間的變量是 不同步的,
把進程數(shù)改成1試下,有可能是你們業(yè)務沒考慮到多進程導致的

  • daohu 2017-08-10

    目前設置的是4,是Gateway和BusinessWorker里的count都改為1嗎?我先測一測,看是不是這個問題。同樣,反過來測或許更能說明問題,是不是我進程數(shù)越多,出錯的幾率就越大?每次onMessage接受到消息都會隨機給不同的進程處理嗎?
    如果是的話又想用多進程需要怎么設置全局變量才不會報錯呢,這個如果一兩句話說不清可以推薦資料我自己去看,再次感謝大神解答

  • walkor 2017-08-10

    多進程都需要共享的數(shù)據(jù)放到數(shù)據(jù)庫或者redis里共享

  • daohu 2017-08-10

    @1:redis我可以去了解下,數(shù)據(jù)庫的話豈不是每次有數(shù)值比對都要從數(shù)據(jù)庫取一次數(shù)據(jù),感覺好麻煩,多進程是不是等于就不能使用全局global了,因為變量不同步必然會帶來錯誤的可能

  • stephen 2017-08-10

    用 GlobalData 組件去同步數(shù)據(jù)會很快

  • daohu 2017-08-11

    @1531:謝謝,我去看看手冊

  • daohu 2017-08-11

    @1:大神,測試了下,進程數(shù)都改成1了,還是遇到這個問題,感覺像是global里的值有誤,或者收到了其他會話的干擾

年代過于久遠,無法發(fā)表回答
??