#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, чтобы изменить параметры транспортной безопасности приложения, но я все еще получаю сообщение об ошибке. Что может пойти не так?