Bibliotecas WebSocket para Swift (iOS/macOS): Starscream e URLSessionWebSocketTask
WebSocket é um protocolo que fornece uma conexão bidirecional contínua entre o cliente (aplicativo iOS/macOS) e o servidor. Ao contrário do HTTP, após o estabelecimento da conexão, os dados podem ser transmitidos em tempo real sem solicitações repetidas. Para Swift, existem duas abordagens principais: usar o URLSessionWebSocketTask nativo (disponível desde iOS 13/macOS 10.15) e a biblioteca de terceiros Starscream (que suporta versões mais antigas e oferece funcionalidades estendidas).
1. URLSessionWebSocketTask — WebSocket nativo em Swift
A partir do iOS 13 e macOS 10.15, a Apple adicionou suporte a WebSocket diretamente no URLSession. Isso significa que, para cenários básicos, não é necessário instalar dependências adicionais.
Exemplo de conexão e envio de mensagem
import Foundation
class WebSocketManager: NSObject { private var webSocketTask: URLSessionWebSocketTask? private let session = URLSession(configuration: .default) func connect() { guard let url = URL(string: "wss://echo.websocket.org") else { return } webSocketTask = session.webSocketTask(with: url) webSocketTask?.resume() receiveMessage() } func sendMessage(_ text: String) { let message = URLSessionWebSocketTask.Message.string(text) webSocketTask?.send(message) { error in if let error = error { print("Erro ao enviar: \\(error.localizedDescription)") } } } private func receiveMessage() { webSocketTask?.receive { [weak self] result in switch result { case .success(let message): switch message { case .string(let text): print("Recebido: \\(text)") case .data(let data): print("Dados binários recebidos: \\(data.count) bytes") @unknown default: break } self?.receiveMessage() // continua ouvindo case .failure(let error): print("Erro ao receber: \\(error.localizedDescription)") } } } func disconnect() { webSocketTask?.cancel(with: .normalClosure, reason: nil) }}Vantagens do URLSessionWebSocketTask
- Sem dependências — tudo já está no sistema.
- Integração nativa com tarefas em segundo plano e App Transport Security.
- Suporte da Apple e atualizações junto com o SO.
Desvantagens
- Versão mínima iOS 13 / macOS 10.15.
- Falta de suporte nativo para reconexão e ping/pong (precisa ser implementado manualmente).
- Menos flexibilidade nas configurações.
2. Starscream — Biblioteca WebSocket poderosa e flexível para Swift
Starscream é a biblioteca WebSocket de terceiros mais popular para Swift. Ela suporta iOS 8+, macOS 10.10+, além de watchOS e tvOS. O Starscream fornece um mecanismo de reconexão embutido, ping/pong automático e suporte a SSL/TLS.
Instalação via Swift Package Manager
// Em Package.swift ou via Xcode: File → Add Packages...// URL: https://github.com/daltoniam/Starscream.git// Versão: 4.0.0 ou superiorExemplo de uso do Starscream
import Starscream
class StarscreamManager: WebSocketDelegate { var socket: WebSocket? func setupConnection() { var request = URLRequest(url: URL(string: "wss://echo.websocket.org")!) request.timeoutInterval = 5 socket = WebSocket(request: request) socket?.delegate = self socket?.connect() }\ Também na biblioteca
Frameworks CLI para Go (Golang): visão geral completa e comparação
Bogus para C# (.NET): guia completo com exemplos
Parsing de HTML em TypeScript: bibliotecas, ferramentas e exemplos de código
CsvHelper para C# (.NET): guia completo com exemplos práticos