Получение ошибки SSL при попытке подключения клиента swift к сокету.сервер ввода-вывода

#ios #node.js #swift #sockets

Вопрос:

Я настраиваю сокет.сервер ввода-вывода в Node.js и клиент в Swift для реализации приложения для чата в реальном времени.

На стороне сервера вот код:

 const express = require('express');
const app = express();
const port = process.env.PORT || 8080;
const server = app.listen(port, () => {
    console.log(`A Node Js API is listening on port: ${port}`);
});
const io = require("socket.io")(server, {
    rejectUnauthorized: false
});

//set socket.io listeners
io.on('connection', (socket) => {
  console.log('a user connected');

  socket.on('disconnect', () => {
    console.log('user disconnected');
  });

  socket.on("connect_error", (err) => {
    console.log(`connect_error due to ${err.message}`);
    });
});
 

На стороне клиента, вот код:

 import SocketIO

class SocketIOManager: NSObject {
    static let sharedInstance = SocketIOManager()
    static let manager = SocketManager(socketURL: URL(string: "https://localhost:8080")!, config: [.log(true), .compress])
    let socket = manager.defaultSocket


    func establishConnection() {
        socket.on("test") { dataArray, ack in
            print(dataArray)
        }
        socket.connect()
    }

    func closeConnection() {
        socket.disconnect()
    }
}
 

Я вызываю функцию establishConnection() в AppDelegate в методе applicationDidBecomeActive (). Когда вызывается функция establishConnection (), я получаю следующую ошибку SSL:

 LOG SocketManager: Trying to reconnect
LOG SocketIOClient{/}: Handling event: reconnectAttempt with data: [-2]
LOG SocketManager: Scheduling reconnect in 25.7991450561197s
LOG SocketEngine: Starting engine. Server: https://localhost:8080
LOG SocketEngine: Handshaking
LOG SocketEnginePolling: Doing polling GET https://localhost:8080/socket.io/?transport=pollingamp;b64=1 
...
finished with error [-1200] Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." 
UserInfo={NSErrorFailingURLStringKey=https://localhost:8080/socket.io/?transport=pollingamp;b64=1, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, 
_NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <A81C6803-9CF8-4930-A6C8-0C633C165D25>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey
 

Я попытался отредактировать Info.plist, чтобы изменить параметры транспортной безопасности приложения, но я все еще получаю сообщение об ошибке. Что может пойти не так?