WebSocket

4.0.3

shareup/websocket-apple

What's New

v4.0.3

2023-12-04T23:46:56Z
  • Update Swift verson to 5.9.
  • Update dependencies.

WebSocket wrapper around URLSessionWebSocketTask

(macOS, iOS, iPadOS, tvOS, and watchOS)

A concrete implementation of a WebSocket client implemented by wrapping Apple's NWConnection.

The public interface of WebSocket is a simple struct whose public methods are exposed as closures. The reason for this design is to make it easy to inject fake WebSockets into your code for testing purposes.

The actual implementation is SystemWebSocket, but this type is not publicly accessible. Instead, you can access it via WebSocket.system(url:). SystemWebSocket tries its best to mirror the documented behavior of web browsers' WebSocket. Please report any deviations as bugs.

WebSocket exposes a simple API and makes heavy use of Swift Concurrency.

Installation

To use WebSocket, add a dependency to your Package.swift file:

let package = Package(
  dependencies: [
    .package(
      url: "https://github.com/shareup/websocket-apple.git",
      from: "4.0.0"
    )
  ]
)

Usage

// `WebSocket` starts connecting to the specified `URL` immediately.
let socket = WebSocket.system(url: url(49999))

// Wait for `WebSocket` to be ready to send and receive messages.
try await socket.open()

// Send a message to the server
try await socket.send(.text("hello"))

// Receive messages from the server
for await message in socket.messages {
    print(message)
}

try await socket.close()

Tests

  1. In your Terminal, navigate to the websocket-apple directory
  2. Run the tests using swift test

Description

  • Swift Tools 5.9.0
View More Packages from this Author

Dependencies

Last updated: Sat Apr 13 2024 18:37:03 GMT-0900 (Hawaii-Aleutian Daylight Time)