This commit is contained in:
Raven Scott
2026-05-20 21:02:45 -04:00
parent 1f3f4b24a2
commit 14d0980b4f
734 changed files with 682 additions and 746 deletions
@@ -0,0 +1,37 @@
require('bare-process/global')
const { RPCServer, RPCClient } = require('../index.js')
const SecretStream = require('@hyperswarm/secret-stream')
const { pairSecretStreams, waitSecretStreamsConnected } = require('../lib/pair.js')
async function demo () {
console.log('=== hyper-p2p-rpc Basic Demo (SecretStream) ===')
const a = new SecretStream(true)
const b = new SecretStream(false)
const server = new RPCServer()
server.register('add', async (params) => ({ result: (params.a || 0) + (params.b || 0) }))
server.register('greet', async (params) => ({ message: `Hello, ${params.name || 'stranger'}!` }))
server.handleConnection(a)
const client = new RPCClient(b)
pairSecretStreams(a, b)
await waitSecretStreamsConnected(a, b)
const sum = await client.call('add', { a: 42, b: 58 })
console.log('42 + 58 =', sum.result)
const greeting = await client.call('greet', { name: 'Pear Developer' })
console.log(greeting.message)
server.close()
a.destroy()
b.destroy()
console.log('Demo complete.')
}
demo().catch((err) => {
console.error(err)
process.exit(1)
})
@@ -0,0 +1,38 @@
require('bare-process/global')
const { RPCServer, RPCClient } = require('../index.js')
const SecretStream = require('@hyperswarm/secret-stream')
const { pairSecretStreams, waitSecretStreamsConnected } = require('../lib/pair.js')
async function streamingDemo () {
console.log('=== hyper-p2p-rpc Streaming Demo (SecretStream) ===')
const a = new SecretStream(true)
const b = new SecretStream(false)
const server = new RPCServer()
server.register('count-stream', async function * (params) {
const max = params.max || 5
for (let i = 0; i < max; i++) {
yield { seq: i, value: i * i }
await new Promise((r) => setTimeout(r, 100))
}
})
server.handleConnection(a)
const client = new RPCClient(b)
pairSecretStreams(a, b)
await waitSecretStreamsConnected(a, b)
const stream = await client.callStream('count-stream', { max: 4 })
for await (const chunk of stream) {
console.log('chunk:', chunk)
}
server.close()
a.destroy()
b.destroy()
console.log('Streaming demo complete.')
}
streamingDemo().catch(console.error)