我正在使用 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()
您尝试使用的库不支持该协议。来自 https://socket.io/docs/v4/
的文档Socket.IO是什么不小心
Socket.IO 不是 WebSocket 实现。
虽然 Socket.IO 确实在可能的情况下使用 WebSocket 进行传输, 它向每个数据包添加额外的元数据。这就是为什么 WebSocket 客户端将无法成功连接到 Socket.IO 服务器, 并且 Socket.IO 客户端将无法连接到普通的 WebSocket 服务器也可以。
// 警告:客户端将无法连接!常量套接字= io("ws://echo.websocket.org");