Sobes.tech
Junior — Middle

Pode explicar o princípio de funcionamento do protocolo WebSocket e como ele garante uma conexão constante entre o servidor e o cliente?

sobes.tech IA

Resposta da IA

WebSocket é um protocolo que fornece uma conexão bidirecional persistente entre o cliente e o servidor sobre TCP. Ao contrário do HTTP clássico, onde o cliente inicia as solicitações, o WebSocket permite que o servidor envie dados ao cliente a qualquer momento.

Princípio de funcionamento:

  1. O cliente inicia uma solicitação HTTP com o cabeçalho Upgrade: websocket para mudar para o protocolo WebSocket.
  2. O servidor confirma a transição e uma conexão persistente é estabelecida.
  3. Após estabelecer a conexão, o cliente e o servidor podem trocar mensagens em tempo real sem a necessidade de solicitações HTTP repetidas.

Isso permite criar aplicações com baixa latência, como chats, jogos, terminais financeiros.

Exemplo de uso do WebSocket no iOS (Swift):

import Foundation

let url = URL(string: "wss://example.com/socket")!
let webSocketTask = URLSession.shared.webSocketTask(with: url)

webSocketTask.resume()

// Enviar mensagem
let message = URLSessionWebSocketTask.Message.string("Olá servidor!")
webSocketTask.send(message) { error in
    if let error = error {
        print("Erro ao enviar: \(error)")
    }
}

// Receber mensagens
func receive() {
    webSocketTask.receive { result in
        switch result {
        case .failure(let error):
            print("Erro ao receber: \(error)")
        case .success(let message):
            switch message {
            case .string(let text):
                print("Mensagem recebida: \(text)")
            default:
                break
            }
            receive() // continuar ouvindo
        }
    }
}

receive()

Assim, o WebSocket fornece uma conexão eficiente e persistente para troca de dados em tempo real.