#javascript #node.js #sockets #websocket #socket.io
Вопрос:
У меня возникла проблема в моем приложении, когда я должен был получить код ответа 200 (и я получаю его по большей части), но в определенные моменты я получаю код ответа 101. Что именно это означает в контексте socket.io? Я читал, что это означает, что происходит переключение протокола, чего, вероятно, я не хочу. Это большая проблема, потому что сразу после того, как в журнале появляется сообщение «ОТКЛЮЧЕННЫЙ ПОЛЬЗОВАТЕЛЬ», я получаю этот код ответа, и он портит мое приложение. Может быть, это просто плохое подключение пользователя? Я думаю, может быть, это потому, что транспортная политика переходит от «опроса» к «веб-сокетам»? Если в этом проблема, как я могу ее исправить?
Я прикрепляю изображения, но, честно говоря, я даже не знаю, что писать в терминах кода, поэтому вот мой сокет.инициализация ввода-вывода:
const io = require('socket.io')(http);
function onConnection(socket){
console.log("Connected a socket");
socket.on('disconnect', function() {
console.log("DISCONNECTED USER: " socket.id);
}
}
Клиент находится в Swift и выглядит так:
var socket: SocketIOClient?
func establishConnection(_ completion: (() -> Void)? = nil) {
let socketUrlString: String = "serverURL"
self.manager = SocketManager(socketURL: URL(string: socketUrlString)!, config: [.log(false), .reconnects(true), .extraHeaders(["header": "customheader"])])
self.socket = manager?.defaultSocket
self.socket?.connect()
appState.socketIsConnected = true
self.socket?.once(clientEvent: .connect, callback: { (data, emitter) in
print("nnn connection done!! nnn")
if completion != nil{
completion!()
}
})
}
Комментарии:
1. протоколы переключения — это именно то, что вам нужно при использовании websockets
2. @Bravo, но я не запускаю никаких событий отключения-и все работает гладко, когда все, что я вижу в журналах, — это код ответа 200… что привело меня к убеждению, что 101-й был источником ошибки. Что еще это могло быть?
3. понятия не имею — код, который вы показали, даже не показывает, как вызывается эта функция — также код клиента может быть неправильным
4. @Bravo Спасибо, что сказали мне, чего мне не хватало-я добавил клиентский код. Единственное, о чем я могу думать, это если я несколько раз вызываю соединение для установления соединения-это вызовет эту ошибку?) Это довольно шаблонно, хотя, поэтому я не уверен, насколько это будет полезно, если только не было вариантов, которые я должен был добавить…