【问题标题】:ERROR SocketEnginePolling: Error during long poll request错误 SocketEnginePolling:长轮询请求期间出错
【发布时间】:2020-10-15 02:05:27
【问题描述】:
let manager = SocketManager(socketURL: URL(string: "Some url")!, config: [.log(true), .compress])
var socket:SocketIOClient!
var name: String?
var resetAck: SocketAckEmitter?



override func viewDidLoad() {
    super.viewDidLoad()
    
    socket = manager.defaultSocket

    socket.on(clientEvent: .connect) {data, ack in
        print("socket connected")
    }

    self.socket.on(clientEvent: .error) {data, ack in
        print("error")
    }

    self.socket?.on(clientEvent: .disconnect){data, ack in

        print("disconnect")

    }

    socket.connect()
    
    
}

ERROR SocketEnginePolling: 长轮询请求期间出错

LOG SocketIOClient{/}:处理事件:数据错误:["Error"]

【问题讨论】:

  • 检查您的服务器日志,并在 swift-client 连接时查找消息,“客户端正在使用不受支持的 Socket.IO 或 Engine.IO 协议版本”。如果您看到此消息,请将 Socket.io-Swift-Client 更新到最新版本。这为我解决了这个问题。

标签: ios sockets websocket socket.io swift5


【解决方案1】:

所以这个问题让我花了 8 个小时苦苦挖掘,下面是我解决问题所遵循的步骤。

  1. 检查您是否使用“localhost:PORTNUMBER”作为您的 URL。相反,请尝试使用 ngrok ngrok 的临时“https”。

  2. 如果您坚持使用 http,请尝试在项目的 info.plist 中禁用 App Transport Security policy

  3. 检查您是否使用兼容的客户端(iOS)和服务器(Node js 等)Socket.io 版本。您可以查看兼容性表here

    • 一个简单的解决方法是将服务器 Socket.io 版本降低到 1.x.x。
    • 为了将服务器 Socket.io 版本保持为 4.x.x(撰写本文时为当前版本),在实例化服务器时添加 allowEI03: true 选项:
      const io = new Server(httpServer, {
        allowEIO3: true
      });
    
    • 如果您使用 express 制作服务器,我建议这样做:
      const express = require("app");
      const { createServer } = require("http");
      const { Server } = require("socket.io");
      const app = express();
      const httpServer = createServer(app);
    
      const io = new Server(httpServer, { 
        allowEIO3: true,
      });
    
      io.on("connection", (socket) => {
        // ...
      });
    
      httpServer.listen(3000);
    

【讨论】:

  • 是最新版的swift 16,为什么github上是15?
【解决方案2】:

将 pod 更新为 Socket.IO-Client-Swift 16.0.1

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • @Eman Gaber 为我工作,谢谢
猜你喜欢
  • 2019-07-17
  • 1970-01-01
  • 2014-05-27
  • 2013-06-12
  • 1970-01-01
  • 2017-04-15
  • 2018-08-09
  • 2020-12-10
  • 1970-01-01
相关资源
最近更新 更多