我正在创建一个通过websockets连接的网页游戏。
创建一个处理websocket中调用的消息传递系统非常容易。挑战是呼叫响应。 "请求World Chunk 0,0"很容易。我需要的是一种区分消息返回的方法。我向服务器发送数据请求,我通过websocket回来的下一条消息可能是任何内容:玩家动作,分数变化,物理同步数据等。
我能想到的最好的解决方案是为调用生成一个UUID,让UUID成为返回数据的一部分,然后为该UUID运行回调(或承诺)。 (即:{request:'Get 0,0',id:'1234'}
{response:DATA,id:'1234'}
)。然后我需要在请求方跟踪所有这些承诺,并管理某种超时系统。
我试图为此找到更好的设计模式:通过单一通信线异步回调的方法。有没有比回调ID系统更好的设计?是否有一个Browser / Nodejs软件包可以轻松处理这个问题?
注意:我在这里提到了websockets,但我也期望webworker元素有类似的问题/解决方案:"创建物理对象",但物理线程的下一条消息可能是碰撞消息或渲染器更新消息。