【问题标题】:Synchronising data between client / server在客户端/服务器之间同步数据
【发布时间】:2012-09-26 03:33:36
【问题描述】:

我正在制作一个用于学习目的的简单 html5 游戏。我想通过网络发送尽可能少的数据以保持同步。当我在客户端和服务器之间发送游戏状态时,我只想发送自上次更新以来游戏状态发生的变化,以节省带宽/延迟。

我能想到的唯一方法是在从远程源接收到的每个更新上创建一个“快照”或游戏状态对象的副本,然后在本地操作游戏状态并需要发送出去之后通过游戏状态对象到远程源循环,将每个值与临时游戏状态进行比较,只发送差异......

这是最有效的方法吗?

/****************************/
/**** Current game state ****/
gameState = {

    playerOneID: 'XXX-XXX-XXX-XXX',
    playerTwoID: 'YYY-YYY-YYY-YYY',
    elapsedTime: 00007,
    myVariable: 'abcd1234'    
}    

/*******************************************/
/**** saves game state from last update recieved ****/
tmpGameState = {

    playerOneID: 'XXX-XXX-XXX-XXX',
    playerTwoID: 'YYY-YYY-YYY-YYY',
    elapsedTime: 00003,
    myVariable: 'abc123'    
}    

【问题讨论】:

    标签: javascript html node.js architecture socket.io


    【解决方案1】:

    大多数网络至少将数据发送到最多 1024 字节的数据包中,并且至少在计划离开时发送。

    【讨论】:

    • 所以你是说最小的数据包是 1024 字节(1 KB)?
    • 即使连接是websocket?您可能是对的,但我发现这很难相信,因为数据是“在需要时”发送的。如果数据小于 1KB,剩下的就是协议填充?
    猜你喜欢
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    相关资源
    最近更新 更多