我正在使用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()
}
我在崩溃之前得到这个日志Socket Connected外部登录检查....
请你帮助我好吗?
我得到了我的问题的解决方案。我不知道这个解决方案是否适用于其他相同的解决方案,但这对我有用。
我做的是
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”即可。
如果他们面临同样的问题,希望这对其他人有用。