1

我正在尝试将我的 android 应用程序与同步服务器同步,但客户端似乎无法连接到服务器。Admin UI 在 localhost:9980 上完美运行。服务器在 docker 上运行。

001-13:29:41.2231 [INFO ] [SvrUws] UwsServer listening on all interfaces, port 9999 without SSL
001-13:29:41.2234 [WARN ] [SvSync] UNSECURED no-authentication mode enabled - every client allowed without any validation
001-13:29:41.2256 [INFO ] [SvSync] Started on port 9999
001-13:29:41.2257 [INFO ] [SySvAp] Starting object browser on 0.0.0.0:9980
001-13:29:41.2263 [INFO ] [HttpSv] Running in single-store mode with an already opened store
001-13:29:41.2263 [INFO ] [HttpSv] Listening on 0.0.0.0:9980
001-13:29:41.2266 [WARN ] [HttpSv] UNSECURED no-authentication mode enabled:
!!! Allowing access to anyone without any user validation
!!! After e.g. adjusting user logins, please restart asap to secure the server again
001-13:29:41.2266 [INFO ] [HttpSv] User management: enabled
001-13:29:41.2305 [INFO ] [HttpSv] HttpServer listening on all interfaces, port 9980
001-13:29:41.2318 [INFO ] [SySvAp] ObjectBox sync server started in 62 ms

在此处输入图像描述

首先,我尝试了文档所说的“wss://127.0.0.1”,然后我尝试使用 ws,然后使用指定的端口号(9980 和 9999)。然后我尝试配置url。

{
    "dbDirectory": "objectbox",
    "bind": "ws://0.0.0.0:9999",
    "browserBind": "http://127.0.0.1:9980",
    "browserThreads": 4,
    "certificatePath": ""
}

都没有奏效。请帮助我如何找到正确的连接地址。

更新:在模拟器中,您必须使用 10.0.2.2 才能访问 localhost!在 MainActivity onCreate() 方法中:

BoxStore boxStore = ObjectBox.get();

        SyncClient syncClient = Sync.client(
                boxStore,
                "ws://10.0.2.2", 
                SyncCredentials.none()
        ).buildAndStart();

在此处输入图像描述

4

2 回答 2

1

您需要指定运行服务器的机器的 IP。

如果您正在运行 Android 模拟器,请使用 10.0.2.2 访问主机。

实际上,这将是对同步故障排除指南的一个很好的补充……已更新,谢谢。

于 2021-09-26T15:08:48.247 回答
1

解决了!

android 应用程序缺少这些权限:

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

添加这些后,一切正常!

于 2021-10-08T09:21:00.750 回答