Swiftpack.co - ChimeHQ/JSONRPC as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by ChimeHQ.
ChimeHQ/JSONRPC 0.9.0
Swift library for JSON-RPC
⭐️ 21
🕓 7 weeks ago
iOS macOS watchOS tvOS
.package(url: "https://github.com/ChimeHQ/JSONRPC.git", from: "0.9.0")

Build Status License Platforms Documentation


A simple Swift library for JSON-RPC


  • type-safety
  • flexible data transport support
  • concurrency support


dependencies: [
    .package(url: "https://github.com/ChimeHQ/JSONRPC", from: "0.9.0")


The core type you'll use is JSONRPCSession. It requires you set up a DataChannel object that handles reading and writing raw data.

let channel = DataChannel(...)
let session = JSONRPCSession(channel: channel)

let params = "hello" // any Encodable
let response: Decodable = try await session.sendRequest(params, method: "my_method")

Task {
    for await (request, handler, data) in session.requestSequence {
        // inspect request, possibly re-decode with more specific type,
        // and reply using the handler

Task {
    for await (notification, data) in session.notificationSequence {
        // inspect notification


The closures on the DataChannel allow different transport mechanisms to be used. The JSONRPC package provides a few basic variants:

  • Predefined messages channel
    • A channel that delivers a static set of messages
    • Usage: let channel = await DataChannel.predefinedMessagesChannel(with: messages)
  • Stdio channel
    • Using stdout + stdin as message transport.
    • Note: When using this transport, make sure no non-protocol messages are sent to stdout, eg using print
    • Usage: let channel = DataChannel.stdioPipe()
  • Actor channel
    • Using swift actors to pass messages.
    • Can eg be useful for testing, where both client and server are implemented in swift and running in the same process.
    • Usage: let (clientChannel, serverChannel) = DataChannel.withDataActor()

Contributing and Collaboration

I'd love to hear from you! Get in touch via an issue or pull request.

I prefer collaboration, and would love to find ways to work together if you have a similar project.

I prefer indentation with tabs for improved accessibility. But, I'd rather you use the system you want and make a PR than hesitate because of whitespace.

By participating in this project you agree to abide by the Contributor Code of Conduct.


Stars: 21
Last commit: 7 weeks ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

7 weeks ago

What's Changed

New Contributors

Full Changelog: https://github.com/ChimeHQ/JSONRPC/compare/0.8.1...0.9.0

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics