我正在使用 Socket.io 进行一对一聊天。我以前用过,但从未遇到过此类问题。显示以下错误后,我的应用程序崩溃了。
我遇到的错误
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String okhttp3.MediaType.toString()' on a null object reference
at io.socket.engineio.client.transports.PollingXHR$Request.onLoad(PollingXHR.java:271)
at io.socket.engineio.client.transports.PollingXHR$Request.access$700(PollingXHR.java:148)
at io.socket.engineio.client.transports.PollingXHR$Request$1.onResponse(PollingXHR.java:232)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:216)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
到目前为止我做了什么?
try {
val user_email = preferenceManager.getLoggedInUserEmail()
val ioOption = IO.Options()
ioOption.query = "username=anyemail"
ioOption.secure =true
ioOption.reconnection=true
SocketConstants.socketIOClient = IO.socket(SocketConstants.SOCKET_URL, ioOption)
SocketConstants.socketIOClient?.on(Socket.EVENT_CONNECT, object : Emitter.Listener {
override fun call(vararg args: Any) {
SocketConstants.isSocketConnecting = false
Log.i(TAG, "Socket Connected Outside login check...."+args.size)
}
})
SocketConstants.socketIOClient!!.connect()
} catch (e: Exception) {
e.printStackTrace()
}
崩溃前我正在获取此日志 套接字已连接外部登录检查。...
能请你帮我吗?
答案 0 :(得分:0)
我已经解决了我的问题。我不知道该解决方案是否可以解决其他面临的问题,但这对我有用。
我所做的是
val ioOption = IO.Options()
ioOption.query = "username=$user_email"
ioOption.secure = true
ioOption.reconnection = true
ioOption.transports = arrayOf(WebSocket.NAME)
SocketConstants.socketIOClient = IO.socket(SocketConstants.SOCKET_URL, ioOption)
ioOption.transports = arrayOf(WebSocket.NAME)
此行解决了我的问题。只需将trasports添加为“ WebSocket”即可。
希望这对其他遇到相同问题的人也有用。
答案 1 :(得分:0)
他们发布了新版本 1.0.1,修复了错误 https://github.com/socketio/engine.io-client-java/commit/6f065b7a62603730979d43cec71af0046ca4ab7c(29 天前)。如果您尝试使用 v2.0.0,请小心,我无法接收套接字消息,所以我使用了 1.0.1