Trong trò chơi nhiều người chơi của tôi, tôi có 2 đối thủ. Làm cách nào để 1 người ngang hàng được thông báo khi người khác có sự cố/ngắt kết nối mạng? Tôi đã mong rằng onPeerLeft
hoặc onPeersDisconnected
bị sa thải, nhưng không có gì!Dịch vụ của Google Play: cách xử lý ngắt kết nối mạng ngang hàng?
Trên thực tế tôi sẽ thực hiện một số loại cơ chế ping để nếu một đẳng không nhận được thông báo ping trong một thời gian nhất định tôi có thể ném một cái gì đó cho người sử dụng (Một hộp thoại xác định rằng đối thủ bị ngắt kết nối.)
Thay vào đó, có một cuộc gọi lại để lắng nghe khi loại vấn đề này không?
Trên ngang ngắt kết nối Tôi đang sử dụng onRealTimeMessageSent
callback để phát hiện nếu peer không thể gửi dữ liệu, như sau:
@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
}
}
Trên ngang hàng khác, không có callbacks khác được nâng lên (ví dụ như onPeerLeft
hoặc onPeersDisconnected
)
Bất kỳ đề xuất nào? Cảm ơn trước!
ok, cuối cùng tôi đã chọn cho một cơ chế ping-pong với một 'Timer' sheduling một' Timertask' mỗi 5 giây trong cuộc gọi lại 'onRoomConnected'. Sau đó, tôi kiểm tra thời gian ping nhận được cuối cùng trước khi gửi tin nhắn mới, nếu thời gian trôi qua lớn hơn thời gian ping, sau đó tôi có thể ném thông báo lỗi thích hợp. Bất kỳ đề xuất nào khác đều được hoan nghênh! –