Android: сообщение, отправленное с использованием mRealTimeMultiplayerClient, отличается от полученного - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь разработать игру multiplayer android.Для отправки сообщения между пирами я использую sendReliableMessage из mRealTimeMultiplayerClient.Сообщение, которым я хочу поделиться, является случайным письмом, которое я получаю.Проблема в том, что сгенерированное мной письмо перед отправкой сообщения отличается от письма, которое я получаю после получения сообщения, и я не могу понять, где моя ошибка.

Это метод, в котором я вызываю методчтобы случайно выбрать письмо и отправить его с помощью mRealTimeMultiplayerClient

byte[] mLetterBuf = new byte[1];

void broadcastLetter(){
    if (!mMultiplayer) {
        // playing single-player mode
        return;
    }

    mLetterBuf = randomLetter();
    //mLetterBuf[0] = mLetter.getBytes()[0];

    // Send to every other participant.
    for (Participant p : mParticipants) {
        if (p.getParticipantId().equals(mMyId)) {
            continue;
        }

        if (p.getStatus() != Participant.STATUS_JOINED) {
            continue;
        }

        // final score notification must be sent via reliable message
        mRealTimeMultiplayerClient.sendReliableMessage(mLetterBuf,
                mRoomId, p.getParticipantId(), new RealTimeMultiplayerClient.ReliableMessageSentCallback() {
                    @Override
                    public void onRealTimeMessageSent(int statusCode, int tokenId, String recipientParticipantId) {
                        //Log.d(TAG, "RealTime message sent--------->"+mLetterBuf[0]);

                    }
                })
                .addOnSuccessListener(new OnSuccessListener<Integer>() {
                    @Override
                    public void onSuccess(Integer tokenId) {
                        Log.d(TAG, "Created a reliable message with tokenId: " + tokenId);
                    }
                });
    }
}

метода, чтобы выбрать случайное письмо:

public byte[] randomLetter(){
    String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    Random rnd = new Random();
    char c = chars.charAt(rnd.nextInt(chars.length()));
    String letra = String.valueOf(c);

    byte[] by_new = letra.getBytes();
        return by_new;
}    

Вот где я собираюсь прочитать полученное сообщение (вот здесьЯ получаю письмо, отличное от сгенерированного в методе randomLetter() - это перед тем, как я вызываю метод для обмена письмом со сверстниками:

OnRealTimeMessageReceivedListener mOnRealTimeMessageReceivedListener = new OnRealTimeMessageReceivedListener() {
        @Override
        public void onRealTimeMessageReceived(@NonNull RealTimeMessage realTimeMessage) {

            byte[] buf = realTimeMessage.getMessageData();
            String sender = realTimeMessage.getSenderParticipantId();

            Log.d(TAG, "Letter received: " + (char) buf[0]); <-------Problem is here
     updatePeersLetter(str);
(...)

Кто-нибудь может понять, почему я получаю разные письма перед отправкой ипосле получения сообщения?

...