websocket 错误套接字引擎轮询:长轮询请求期间出错

g6ll5ycj  于 2022-11-11  发布在  其他
关注(0)|答案(3)|浏览(142)
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()

}

错误套接字引擎轮询:长轮询请求期间出错
日志套接字IO客户端{/}:处理事件:数据错误:[“错误”]

olhwl3o2

olhwl3o21#

将pod更新为Socket. IO客户端-Swift 16.0.1

klsxnrf1

klsxnrf12#

所以这个问题给了我相当痛苦的8个小时的挖掘,这里是我遵循的步骤来解决这个问题。
1.请检查您是否使用'localhost:PORTNUMBER'作为您的URL。请尝试使用ngrokngrok的临时'https'。
1.如果您坚持使用http,请尝试在项目的info.plist中禁用App Transport Security policy

  • 请检查您是否使用了兼容的客户端(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);
t1qtbnec

t1qtbnec3#

升级你的软件包版本到16. 0. 1。这对我也有效!!!

相关问题