question
SignalR depends on:
implementation 'com.microsoft.signalr:signalr:5.0.3'
When using SignalR for real-time communication, the program runs fine in debug installation mode. After packaging and publishing, the operation reports an error:
03-06 15:02:50.504 13121-13158/? I/c.e.a.z1: WebSocket transport connected to: ws://192.168.1.137:8066/messagehub?id=2--aL0lysu5pheJNLJuC6w.
03-06 15:02:50.510 13121-13158/? I/c.e.a.v0: HubConnection started.
03-06 15:02:50.511 13121-13158/? I/c.e.a.l1: WebSocket closing with status code '1000' and reason ''.
03-06 15:02:50.512 13121-13158/? I/c.e.a.v0: HubConnection stopped.
03-06 15:02:50.514 13121-13522/? E/c.e.a.l1: WebSocket closed from an error.
java.net.SocketException: sendto failed: ECONNRESET (Connection reset by peer)
at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:549)
at libcore.io.IoBridge.sendto(IoBridge.java:518)
at java.net.HwPlainSocketImpl.write(HwPlainSocketImpl.java:1129)
at java.net.HwPlainSocketImpl.access$1500(HwPlainSocketImpl.java:63)
at java.net.HwPlainSocketImpl$PlainSocketOutputStream.write(HwPlainSocketImpl.java:887)
at okio.Okio$1.write(Okio.java:5)
at okio.AsyncTimeout$1.write(AsyncTimeout.java:6)
at okio.RealBufferedSink.emit(RealBufferedSink.java:3)
at f.i0.m.d.a(WebSocketWriter.java:35)
at f.i0.m.d$a.close(WebSocketWriter.java:2)
at okio.RealBufferedSink.close(RealBufferedSink.java:4)
at f.i0.m.a.d(RealWebSocket.java:29)
at f.i0.m.a$a.run(RealWebSocket.java:1)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:154)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:833)
Caused by: android.system.ErrnoException: sendto failed: ECONNRESET (Connection reset by peer)
at libcore.io.Posix.sendtoBytes(Native Method)
at libcore.io.Posix.sendto(Posix.java:211)
at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:278)
at libcore.io.IoBridge.sendto(IoBridge.java:516)
at java.net.HwPlainSocketImpl.write(HwPlainSocketImpl.java:1129)
at java.net.HwPlainSocketImpl.access$1500(HwPlainSocketImpl.java:63)
at java.net.HwPlainSocketImpl$PlainSocketOutputStream.write(HwPlainSocketImpl.java:887)
at okio.Okio$1.write(Okio.java:5)
at okio.AsyncTimeout$1.write(AsyncTimeout.java:6)
at okio.RealBufferedSink.emit(RealBufferedSink.java:3)
at f.i0.m.d.a(WebSocketWriter.java:35)
at f.i0.m.d$a.close(WebSocketWriter.java:2)
at okio.RealBufferedSink.close(RealBufferedSink.java:4)
at f.i0.m.a.d(RealWebSocket.java:29)
at f.i0.m.a$a.run(RealWebSocket.java:1)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:154)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:833)
03-06 15:02:50.514 13121-13522/? E/c.e.a.v0: 'stopConnection' called with a null ConnectionState. This is not expected, please file a bug. https://github.com/dotnet/aspnetcore/issues/new?assignees=&labels=&template=bug_report.md
reason
During the packaging and publishing process, the SignalR library file com.microsoft.signalr was confused, which led to an exception during operation.
Solution
Add to proguard's obfuscation rules:
-keep class com.microsoft.**{*;}
Problem solved!