Что означает ответ 101 в контексте socket.io?

#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!()
            }
        })
}
 

https://i.stack.imgur.com/oDt48.png

Комментарии:

1. протоколы переключения — это именно то, что вам нужно при использовании websockets

2. @Bravo, но я не запускаю никаких событий отключения-и все работает гладко, когда все, что я вижу в журналах, — это код ответа 200… что привело меня к убеждению, что 101-й был источником ошибки. Что еще это могло быть?

3. понятия не имею — код, который вы показали, даже не показывает, как вызывается эта функция — также код клиента может быть неправильным

4. @Bravo Спасибо, что сказали мне, чего мне не хватало-я добавил клиентский код. Единственное, о чем я могу думать, это если я несколько раз вызываю соединение для установления соединения-это вызовет эту ошибку?) Это довольно шаблонно, хотя, поэтому я не уверен, насколько это будет полезно, если только не было вариантов, которые я должен был добавить…