Setup:
Android 9
nginx/1.10.3 (Ubuntu)
Sync Gateway/2.6.0(127;b4c828d) CE
Android client connects to nginx box which in turn forwards requests to one (of several) SG boxes. When the client connects to https://mydomain.com:4984/ all is working fine. Connecting to wss://mydomain.com:4984/ displays these two error messages in Android’s logcat.
E/CouchbaseLite/NETWORK: {N8litecore4repl12C4SocketImplE#1}==> N8litecore4repl12C4SocketImplE wss://mydomain.com:4984/_blipsync @0x79406dbd70
E/CouchbaseLite/NETWORK: {N8litecore4repl12C4SocketImplE#1} No response received after 15 sec -- disconnecting
Turning the firewall of the nginx box off and connecting again the error message is:
W/CouchbaseLite/NETWORK: C4Socket.open() socket -> 520700289152
W/CouchbaseLite/NETWORK: C4Socket.open() clazz -> com.couchbase.lite.internal.replicator.CBLWebSocket
E/CouchbaseLite/NETWORK: CBLWebSocket.socket_open()
W/CouchbaseLite/NETWORK: WebSocketListener.onFailure() response -> null: java.net.ConnectException: Failed to connect to mydomain.com/<IP>:4984
W/CouchbaseLite/NETWORK: C4Socket.dispose() handle -> 520700289152
E/CouchbaseLite/REPLICATOR: {Repl#4}==> N8litecore4repl10ReplicatorE /data/user/0/com.my.app/files/couchbase_database.cblite2/ ->wss://mydomain.com:4984/_blipsync @0x794093b5c8
E/CouchbaseLite/REPLICATOR: {Repl#4} Got LiteCore error: POSIX error 111 "Connection refused"
W/System.err: CouchbaseLiteException{POSIXErrorDomain,111,'Connection refused'}
W/System.err: at com.couchbase.lite.CBLStatus.convertException(CBLStatus.java:11)
W/System.err: at com.couchbase.lite.CBLStatus.convertException(CBLStatus.java:1)
W/System.err: at com.couchbase.lite.CBLStatus.convertException(CBLStatus.java:4)
W/System.err: at com.couchbase.lite.AbstractReplicator.updateStateProperties(AbstractReplicator.java:5)
W/System.err: at com.couchbase.lite.AbstractReplicator.c4StatusChanged(AbstractReplicator.java:19)
W/System.err: at com.couchbase.lite.AbstractReplicator$ReplicatorListener.a(AbstractReplicator.java:1)
W/System.err: at com.couchbase.lite.i.run(Unknown Source:4)
W/System.err: at com.couchbase.lite.internal.AndroidExecutionService$SerialExecutor.a(AndroidExecutionService.java:1)
W/System.err: at com.couchbase.lite.internal.c.run(Unknown Source:4)
W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/System.err: at java.lang.Thread.run(Thread.java:764)
W/System.err: Caused by: LiteCoreException{domain=2, code=111, msg=Connection refused}
W/System.err: at com.couchbase.lite.CBLStatus.convertException(CBLStatus.java:3)
W/System.err: ... 9 more
W/LanguageCookieService: Default CookieHandler was null
W/System.err: CouchbaseLiteException{POSIXErrorDomain,111,'Connection refused'}
W/System.err: at com.couchbase.lite.CBLStatus.convertException(CBLStatus.java:11)
W/System.err: at com.couchbase.lite.CBLStatus.convertException(CBLStatus.java:1)
W/System.err: at com.couchbase.lite.CBLStatus.convertException(CBLStatus.java:4)
W/System.err: at com.couchbase.lite.AbstractReplicator.updateStateProperties(AbstractReplicator.java:5)
W/System.err: at com.couchbase.lite.AbstractReplicator.c4StatusChanged(AbstractReplicator.java:19)
W/System.err: at com.couchbase.lite.AbstractReplicator$ReplicatorListener.a(AbstractReplicator.java:1)
W/System.err: at com.couchbase.lite.i.run(Unknown Source:4)
W/System.err: at com.couchbase.lite.internal.AndroidExecutionService$SerialExecutor.a(AndroidExecutionService.java:1)
W/System.err: at com.couchbase.lite.internal.c.run(Unknown Source:4)
W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/System.err: at java.lang.Thread.run(Thread.java:764)
W/System.err: Caused by: LiteCoreException{domain=2, code=111, msg=Connection refused}
W/System.err: at com.couchbase.lite.CBLStatus.convertException(CBLStatus.java:3)
W/System.err: ... 9 more
Troubleshooting so far:
nginx version is new enough that it supports web sockets. SSL cert is from let’s encrypt and I wasn’t able to find any mention that wss needs additional config.
Testing the connection on my dev cluster in LAN had no issues. Nginx config is similar on dev and prod boxes besides ssl configs.
In var/log/nginx/access.log
there are many mentions of “CouchbaseLite/1.3 (1.4.4 …” but no mentions of CouchbaseLite/2. No logs in var/log/nginx/error.log
Any pointers are greatly appreciated!