5

在我的多人游戏中,我有 2 个对手。当另一个节点出现网络问题/断开连接时,如何通知 1 个节点?我期待着被解雇onPeerLeft或被onPeersDisconnected解雇,但什么都没有!

实际上,我将实现某种 ping 机制,这样如果一个对等方在指定时间内没有收到 ping 消息,我可以向用户抛出一些东西(一个对话框,指定该对手断开连接。)

作为替代方案,出现此类问题时是否有回调可以收听?

在断开连接的对等体上,我使用onRealTimeMessageSent回调来检测对等体是否无法发送数据,如下所示:

@Override
public void onRealTimeMessageSent(int statusCode, int token, String arg2) {
    //f the peer can't send data 
    if (statusCode == GamesClient.STATUS_REAL_TIME_MESSAGE_SEND_FAILED) {
        //here I show an error dialog and move out of game
    }
}

在另一个对等点上,没有引发其他回调(例如onPeerLeftor onPeersDisconnected

有什么建议吗?提前致谢!

4

2 回答 2

0

听起来您可能没有在调用 builder.build() 之前调用 setRoomStatusUpdateListener(RoomStatusUpdateListener)

编辑:哪里 builder 是你的 RoomConfig.Builder

于 2013-07-18T20:15:06.920 回答
0

远程对等方将不会收到任何消息来指示已断开的连接。这是按设计的(因此可以处理暂时的信号丢失)。

谷歌代表在这里证实了这一点:

https://github.com/playgameservices/cpp-android-basic-samples/issues/53

我已经实现了基于 ping 的超时。

于 2018-01-25T11:34:17.320 回答