一个简单的 Swift 库,用于 JSON-RPC
特性
dependencies: [
.package(url: "https://github.com/ChimeHQ/JSONRPC", from: "0.9.0")
]
您将使用的核心类型是 JSONRPCSession
。它需要您设置一个 DataChannel
对象,该对象处理原始数据的读取和写入。
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
}
}
DataChannel
上的闭包允许使用不同的传输机制。 JSONRPC
包提供了一些基本变体
let channel = await DataChannel.predefinedMessagesChannel(with: messages)
stdout
,例如使用 print
let channel = DataChannel.stdioPipe()
let (clientChannel, serverChannel) = DataChannel.withDataActor()
URLSessionWebSocketTask
作为消息传输。let channel = DataChannel.webSocket(url: socketURL, terminationHandler: { print("socket closed" })
我很乐意听到您的声音!问题或拉取请求都很棒。 Matrix space 和 Discord 都可用于实时帮助,但我强烈倾向于以文档的形式回答。您也可以在 mastodon 上找到我。
我更喜欢协作,如果您有类似的项目,我很乐意找到合作方式。
我更喜欢使用制表符进行缩进以提高可访问性。但是,我宁愿您使用您想要的系统并创建一个 PR,而不是因为空格而犹豫。
参与此项目即表示您同意遵守贡献者行为准则。