我正在使用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()
型
1条答案
按热度按时间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。特别是如果你希望应用程序有后台。