使用 Socket IO 连接时出现服务器错误

问题描述 投票:0回答:1

我正在使用 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)
    }
}

使用的依赖项:

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

调用部分

private val socketManager = SocketManager()
    socketManager.connect()
android kotlin sockets socket.io wss
1个回答
0
投票

您尝试使用的库不支持该协议。来自 https://socket.io/docs/v4/

的文档

Socket.IO是什么不小心

Socket.IO 不是 WebSocket 实现。

虽然 Socket.IO 确实在可能的情况下使用 WebSocket 进行传输, 它向每个数据包添加额外的元数据。这就是为什么 WebSocket 客户端将无法成功连接到 Socket.IO 服务器, 并且 Socket.IO 客户端将无法连接到普通的 WebSocket 服务器也可以。

// 警告:客户端将无法连接!常量套接字= io("ws://echo.websocket.org");

© www.soinside.com 2019 - 2024. All rights reserved.