Unity + Firebase-Database [Ошибка] WebSocket: ws_0 - не удалось подключиться

Кажется, я не могу найти рабочее решение этой ошибки, более полное:

018-06-01 10:33:09 PM [Error] WebSocket: ws_0 - could not connect System.Net.Sockets.SocketException (0x80004005): No route to host

2018-06-01 10:33:09 PM [Error] WebSocket: ws_0 - WebSocketException during handshake Firebase.Database.Internal.TubeSock.WebSocketException: unknown host: ########.firebaseio.com ---> System.Net.Sockets.SocketException: No route to host

Примите к сведению, указанные выше ошибки повторяются несколько раз каждую секунду, при этом ws_ # каждый раз увеличивается на единицу.

Единство 2018.1.1f1

Firebase-Database: все самое новое, полученное несколько дней назад

Немного кода:

void Start() {
    FirebaseApp.LogLevel = LogLevel.Verbose;
    FirebaseDatabase.DefaultInstance.LogLevel = LogLevel.Verbose; // Or your database instance, if not using the default.

    FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
        var dependencyStatus = task.Result;
        if (dependencyStatus == Firebase.DependencyStatus.Available) {
            FirebaseApp app = FirebaseApp.DefaultInstance;
            // NOTE: You'll need to replace this url with your Firebase App's database
            // path in order for the database connection to work correctly in editor.
            app.SetEditorDatabaseUrl("https://########.firebaseio.com/");
            if (app.Options.DatabaseUrl != null) app.SetEditorDatabaseUrl(app.Options.DatabaseUrl);
        } else {
            Debug.LogError(System.String.Format(
                "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
            // Firebase Unity SDK is not safe to use here.
        }
    });
}

Ниже моя попытка получить доступ к базе данных firebase

DatabaseReference mDatabaseRef = FirebaseDatabase.DefaultInstance.RootReference;
staticLocalData.thisUser = new UserData();
staticLocalData.thisUser.userID = newUser.UserId;
staticLocalData.thisUser.email = email;
staticLocalData.thisUser.firstName = firstName;
staticLocalData.thisUser.lastName = lastName;
registerData temp = new registerData();
temp.firstName = firstName;
temp.lastName = lastName;
temp.email = email;
temp.userName = userName;

Debug.Log(JsonUtility.ToJson(temp));
mDatabaseRef.Child("users").SetValueAsync("saddsa:23");  
//mDatabaseRef.Child("users").Child(newUser.UserId).SetRawJsonValueAsync(JsonUtility.ToJson(temp));

Набор правил: (Должно быть разрешено для всех)

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

Дополнительные замечания:

  • Аутентификация Firebase используется и работает отлично, я просто не могу работать / получить доступ к базе данных
  • Я использовал это в качестве основной ссылки: https://firebase.google.com/docs/database/unity/save-data
  • используя net 3x AND 4x, тот же результат
  • также Mono

Ваш код предназначен для базы данных Firebase Realtime, но правила безопасности, которые вы показываете, предназначены для Cloud Firestore. Эти две базы данных полностью разделены, поэтому убедитесь, что правила безопасности и база данных совпадают.

Frank van Puffelen 02.06.2018 01:25

@FrankvanPuffelen, извините, я разместил не тот, я обновил его со стороны firebase

N1T3SLAY3R 05.06.2018 22:16

@FrankvanPuffelen При этом я изначально делал проект как firestore, но я могу переключаться между firestore и firebase на странице проекта. Повлияет ли это на ситуацию?

N1T3SLAY3R 05.06.2018 22:22

Сообщение «Нет маршрута к хосту», похоже, указывает на то, что клиент не может связаться с серверами Firebase. Это может указывать на проблему в самом клиенте (например, прокси) или на проблему между клиентом и сервером (например, брандмауэр).

Frank van Puffelen 06.06.2018 00:43

@FrankvanPuffelen, где мне искать, чтобы отладить это? Имейте в виду, что аутентификационная часть firebase работает отлично. Кроме того, как только я выхожу из режима воспроизведения редактора Unity, ошибки продолжают появляться. и останавливаться только тогда, когда я снова нажимаю воспроизведение в редакторе

N1T3SLAY3R 06.06.2018 17:27

@FrankvanPuffelen При дальнейшем тестировании именно эта строка вызывает появление ошибок: DatabaseReference mDatabaseRef = FirebaseDatabase.DefaultInstance.RootReference;

N1T3SLAY3R 06.06.2018 17:38

Если Auth работает, а RTDB нет, это может быть брандмауэр, блокирующий трафик сокетов (веб). Но это не более чем (слегка обоснованное) предположение. Хороший способ проверить эту теорию - попробовать из другой сети, например дома или по тарифному плану вашего телефона.

Frank van Puffelen 06.06.2018 18:59

@FrankvanPuffelen Я думаю, ваше образование правильное. У меня та же проблема. Я отключил брандмауэр, и он работает примерно в 50% случаев, в других случаях возникает та же проблема. Похоже, ни у кого нет решения этой проблемы ...

Matthew 08.09.2018 18:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
8
4 042
2

Ответы 2

С использованием:

Редактор Unity 2018.2.5f1 в OSX Sierra 10.12.6

среда выполнения сценариев 4.x

бэкэнд сценариев IL2CPP

API уровня 4.x

Плагин Firebase версии 5.2.1

Возникла та же самая проблема. Похоже, это связано с реализациями Mono Websocket, что более подробно обсуждается по следующим вопросам:

https://github.com/firebase/quickstart-unity/issues/106

https://github.com/firebase/quickstart-unity/issues/162

Команда разработчиков Firebase обошла описанное здесь, предоставив собственные собственные реализации веб-сокетов для каждой платформы. Видимо реализация редактора Unity отстает.

Здесь можно было обойти эту проблему, отключив FirebaseDatabase.dll в ../Firebase/Plugins/Mono/ для платформы редактора, а затем вместо этого включив одну FirebaseDatabase.dll непосредственно в ../Firebase/Plugins/.

Все идет нормально.

Что вы имеете в виду под "отключением" dll? Я безуспешно переименовывал / удалял их

Ronak Shah 16.02.2019 18:34

Когда вы нажимаете на файл DLL, упомянутый выше, вы увидите флажки для отключения и включения. Но отключение dll uder mono влияет на вызовы базы данных моего проекта

waleed 11.03.2019 20:04

Это исправлено в новом июльском выпуске firebase_sdk_v6.2.1.

Другие вопросы по теме