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

9avjhtql  于 2024-01-04  发布在  Android
关注(0)|答案(1)|浏览(162)

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

  1. package com.example.socketapplication
  2. import android.util.Log
  3. import io.socket.client.IO
  4. import io.socket.client.Socket
  5. import java.lang.Exception
  6. import java.net.URISyntaxException
  7. class SocketManager {
  8. private var socket: Socket? = null
  9. private var url = "wss://xyz.com/primus/?_primuscb=dBAJyfE&EIO=4&transport=websocket&sid=sp1BWFXgxS2hBz7YAFQt&t=WZKvQcZ&b64=1"
  10. init {
  11. try {
  12. socket = IO.socket(url)
  13. } catch (e: Exception) {
  14. e.printStackTrace()
  15. }
  16. }
  17. fun connect() {
  18. socket?.connect()
  19. socket?.on(Socket.EVENT_CONNECT_ERROR) {
  20. Log.i("SocketConnection", "Not connected ${it.first().toString()}")
  21. // Now you can safely use socket.connected()
  22. }
  23. }
  24. fun disconnect() {
  25. socket?.disconnect()
  26. }
  27. fun isConnected(): Boolean {
  28. return socket?.connected() ?: false
  29. }
  30. fun onMessageReceived(listener: (String) -> Unit) {
  31. socket?.on("message") { args ->
  32. val message = args[0] as String
  33. listener.invoke(message)
  34. }
  35. }
  36. fun sendMessage(message: String) {
  37. socket?.emit("message", message)
  38. }
  39. }

字符串
使用的Departments:

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


调出部

  1. private val socketManager = SocketManager()
  2. 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。特别是如果你希望应用程序有后台。

相关问题