我使用 firebase 实时数据库来保存我的游戏数据。当没有互联网并且我尝试发送 JSON 数据时,它经常给我内部错误。它似乎无休止地尝试发送数据,但我只调用了一次。这会导致控制台内出现错误日志垃圾。 FirebaseDatabase.DefaultInstance.RootReference .Child("users") .Child(GetUserID()) .SetRawJsonValueAsync(json) .ContinueWith(task => { if (task.Exception != null || task.IsCanceled || task.IsFaulted) { Debug.LogError("FirebaseStorageService - Upload User Data - FAILED!"); } else { Debug.Log("FirebaseStorageService - Upload User Data - DONE"); } });我希望进入传递给 ContinueWith 的回调方法并能够在那里处理异常。我应该拥有的似乎是“task.Exception”。我也不能来那个街区。我反复收到的错误消息:09-13 11:50:51.777 30555 31681 E Unity : 09/13/2018 08:50:51 [Error] WebSocket: ws_5 - WebSocketException during handshake09-13 11:50:51.777 30555 31681 E Unity : Firebase.Database.Internal.TubeSock.WebSocketException: unknown host: cooking-game-88ssd.firebaseio.com ---> System.Net.Sockets.SocketException: No such host is known09-13 11:50:51.777 30555 31681 E Unity : at System.Net.Dns.GetHostByName (System.String hostName) [0x00000] in <filename unknown>:009-13 11:50:51.777 30555 31681 E Unity : at System.Net.Dns.GetHostEntry (System.String hostNameOrAddress) [0x00000] in <filename unknown>:009-13 11:50:51.777 30555 31681 E Unity : at Firebase.Database.Internal.TubeSock.WebSocket.GetIpAddress (System.String hostName) [0x00000] in <filename unknown>:009-13 11:50:51.777 30555 31681 E Unity : --- End of inner exception stack trace ---09-13 11:50:51.777 30555 31681 E Unity : at Firebase.Database.Internal.TubeSock.WebSocket.CreateSocket () [0x00000] in <filename unknown>:009-13 11:50:51.777 30555 31681 E Unity : at Firebase.Database.Internal.TubeSock.WebSocket.RunReader () [0x00000] in <filename unknown>:0更新 1: 我刚刚发现这不仅仅是发送或检索。即使有以下声明,我也收到了这些信息:DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference;更新 2:Firebase 4.2 版
2 回答
慕森卡
TA贡献1806条经验 获得超8个赞
这按预期工作,但显然不是您预期的那样。:-)
该任务仅在以下情况下完成:
要么将写入提交到服务器上的磁盘。
或者写入被(服务器上的安全规则)拒绝。
Firebase SDK 不会将丢失的连接视为致命错误。它保留一个挂起的写操作队列,并重试它们,直到它们在服务器上成功/失败。只有这样,任务才能完成。
当您的连接偶尔断开(即移动时在移动设备上)时,这通常很好,因为 Firebase 会自动处理间歇性连接丢失。
如果您希望您的代码在没有连接的情况下甚至不尝试编写,您将需要使用您平台的互联网检测 API,或者在尝试之前收听 Firebase 的.info/connected
路径以确保您已连接到 Firebase 后端写。您通常会将后者置于全局状态,然后在写入数据库之前对其进行检查。
GCT1015
TA贡献1827条经验 获得超4个赞
这也可能是由于您的路径 ( ) 名称中的字符无效。.Child
您可以通过手动添加数据来测试无效字符。如果您看到“路径包含无效字符”,它将引发内部异常。
就我而言,我不得不将字符串更改House-content-324xn4.txt
为简单的House-content-324xn4
.
- 2 回答
- 0 关注
- 193 浏览
添加回答
举报
0/150
提交
取消