android 使用Socket IO连接时发生服务器错误

9avjhtql  于 5个月前  发布在  Android
关注(0)|答案(1)|浏览(80)

我正在使用Socket.io连接到服务器,使用wss协议,下面是我的代码,我面临的问题是服务器错误。与WebSocket相同的URL我没有面临任何问题套接字连接,请让我知道我在下面的代码中缺少什么

package com.example.socketapplication
import android.util.Log
import io.socket.client.IO
import io.socket.client.Socket
import java.lang.Exception
import java.net.URISyntaxException

class SocketManager {
    private var socket: Socket? = null
    private var url = "wss://xyz.com/primus/?_primuscb=dBAJyfE&EIO=4&transport=websocket&sid=sp1BWFXgxS2hBz7YAFQt&t=WZKvQcZ&b64=1"
    init {
        try {
            socket = IO.socket(url)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

    fun connect() {
        socket?.connect()
        socket?.on(Socket.EVENT_CONNECT_ERROR) {

            Log.i("SocketConnection", "Not connected ${it.first().toString()}")
            // Now you can safely use socket.connected()
        }
    }

    fun disconnect() {
        socket?.disconnect()
    }

    fun isConnected(): Boolean {
        return socket?.connected() ?: false
    }

    fun onMessageReceived(listener: (String) -> Unit) {
        socket?.on("message") { args ->
            val message = args[0] as String
            listener.invoke(message)
        }
    }

    fun sendMessage(message: String) {
        socket?.emit("message", message)
    }
}

字符串
使用的Departments:

implementation ("io.socket:socket.io-client:2.1.0")


调出部

private val socketManager = SocketManager()
    socketManager.connect()

pvcm50d1

pvcm50d11#

您尝试使用的库不支持该协议。来自https://socket.io/docs/v4/的文档
什么Socket.IO不谨慎
Socket.IO不是一个WebSocket实现。
尽管Socket.IO确实在可能的情况下使用WebSocket进行传输,但它会向每个数据包添加额外的元数据。这就是为什么WebSocket客户端无法成功连接到Socket.IO服务器,而Socket.IO客户端也无法连接到普通WebSocket服务器的原因。
const socket = io(“ws:echo.websocket.org“);
同样来自同一页:
谨慎
socket.io并不打算用于移动的应用程序的后台服务中。
Socket.IO库保持与服务器的开放TCP连接,这可能会导致用户的电池消耗很高。请使用专用的消息传递平台(如FCM)用于此用例。
虽然有很多方法可以使用它,但在大多数情况下,你应该避免在移动的编程中使用websockets。特别是如果你希望应用程序有后台。

相关问题