Sha*_*rve 6 sockets websocket ios socket.io swift5
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()
}
Run Code Online (Sandbox Code Playgroud)
错误 SocketEnginePolling:长轮询请求期间出错
LOG SocketIOClient{/}:处理事件:数据错误:[“错误”]
所以这个问题让我花了 8 个小时的时间进行了相当痛苦的挖掘,以下是我解决这个问题所遵循的步骤。
检查您是否使用“localhost:PORTNUMBER”作为 URL。相反,请尝试使用ngrok ngrok来使用临时“https” 。
如果您坚持使用 http,请尝试App Transport Security policy在项目的 info.plist 中禁用
检查您是否使用兼容的客户端(iOS)和服务器(Node js等)Socket.io版本。您可以在此处查看兼容性表。
allowEI03: true在实例化服务器时添加选项: const io = new Server(httpServer, {
allowEIO3: true
});
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
900 次 |
| 最近记录: |