Android 实时多人游戏通知连接丢失

Posted

技术标签:

【中文标题】Android 实时多人游戏通知连接丢失【英文标题】:Android Realtime Multiplayer notify connection lost 【发布时间】:2016-08-19 12:20:25 【问题描述】:

我正在使用 RealTime Multiplayer 从这里创建一个 android 游戏:https://developers.google.com/games/services/android/realtimeMultiplayer

如果两个玩家连接到一个房间,并且其中一个玩家的互联网连接中断,我希望另一个玩家得到通知。

目前我没有看到在与其他玩家的连接丢失时调用的任何侦听器。

有没有办法解决这个问题?

【问题讨论】:

欢迎来到 ***!请阅读How do I ask a good question? 到目前为止你做了什么?你可以发布你的代码吗?解释你是如何遇到你试图解决的问题的。 @d.datul1990 我正在实现具有 onPeersDisconnected() 和 onP2PDisconnected() 方法的接口 RoomStatusUpdateListener,但是当玩家连接断开时,这些方法都不会被调用。这些方法仅在用户手动退出游戏(房间)时调用,但在无线/移动数据关闭时不会调用 【参考方案1】:

我使用了在活动中实现的RealTimeMultiplayer.ReliableMessageSentCallback 接口,并通过以下方式使用了解决方法

 @Override
        public void onRealTimeMessageSent(int statusCode, int tokenId, String recipientParticipantId) 
            switch (statusCode) 

                case GamesStatusCodes.STATUS_OK:
                    messageSent = true;
                    break;

                case GamesStatusCodes.STATUS_REAL_TIME_ROOM_NOT_JOINED:
                    break;

                case GamesStatusCodes.STATUS_REAL_TIME_MESSAGE_SEND_FAILED:
                    messageSent = false;
                    break;

            
        

GamesStatusCodes.STATUS_REAL_TIME_MESSAGE_SEND_FAILED 仍然会在 15 到 30 秒后被调用

【讨论】:

【参考方案2】:

这是一种解决方法,但您可以尝试一下,

    您可以重复发送来自两个玩家的消息,以确保 玩家每 1000 次连接到网络 毫秒,

    如果您在 2000 毫秒内没有收到消息,那么 可能是其他玩家端的错误

【讨论】:

【参考方案3】:

创建监听器并检查网络变化

// Indicates the state of Wi-Fi P2P connectivity has changed.
intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);

【讨论】:

已经在使用了,看有 2 位玩家之间的一对一比赛,假设玩家 1 失去连接我们可以使用您的解决方案,但是其他有网络连接的玩家(玩家 2)需要知道玩家 1已失去连接

以上是关于Android 实时多人游戏通知连接丢失的主要内容,如果未能解决你的问题,请参考以下文章

如何检测客户端是不是故意离开 Google Play 游戏实时多人游戏中的房间?

Android多人国际象棋 - 如何处理服务器连接?

Android 上的 Google 实时多人游戏

如何同步播放服务实时多人游戏

WebRTC 是正确的吗? (实时多人游戏)

当应用程序进入后台时,实时多人 Google Play 游戏服务对等方断开连接