【问题标题】:Socket.io connection issueSocket.io 连接问题
【发布时间】:2019-03-06 11:10:32
【问题描述】:

我正在使用 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 Outside login check....

你能帮帮我吗?

【问题讨论】:

    标签: android socket.io okhttp3


    【解决方案1】:

    我的问题得到了解决。我不知道这个解决方案是否适用于其他面临同样问题的人,但这对我有用。

    我做的是

    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”即可。

    如果他们面临同样的问题,希望这对其他人有用。

    【讨论】:

    • 不幸的是,它对我不起作用。我很久以前添加了 Websocket.Name 仍然面临同样的问题
    【解决方案2】:

    他们发布了一个新版本 1.0.1,修复了错误 https://github.com/socketio/engine.io-client-java/commit/6f065b7a62603730979d43cec71af0046ca4ab7c(29 天前)。尝试使用 v2.0.0 时要小心,我无法接收套接字消息,所以我使用了 1.0.1

    【讨论】:

      猜你喜欢
      • 2019-09-16
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      相关资源
      最近更新 更多