mirror of
https://github.com/fluencelabs/registry.git
synced 2025-06-28 07:11:36 +00:00
transition to registry (#82)
This commit is contained in:
committed by
GitHub
parent
845705df98
commit
ab31e61d1c
@ -1,10 +1,9 @@
|
||||
-- This file demonstrates how to send events to subscribers of a topic
|
||||
-- Detailed explanation can be found in the Aqua Book: https://doc.fluence.dev/aqua-book/libraries/aqua-dht#passing-data-to-subscribers
|
||||
|
||||
import "@fluencelabs/aqua-dht/pubsub.aqua"
|
||||
import "@fluencelabs/aqua-dht/dht.aqua"
|
||||
|
||||
alias PeerId: string
|
||||
import "@fluencelabs/registry/routing.aqua"
|
||||
import "@fluencelabs/registry/registry.aqua"
|
||||
import PeerId from "@fluencelabs/aqua-lib/builtin.aqua"
|
||||
|
||||
-- Application event
|
||||
data Event:
|
||||
@ -24,10 +23,10 @@ func call_subscriber(sub: Record, event: Event):
|
||||
SubscriberAPI.receive_event(event)
|
||||
|
||||
-- send event to every subscriber
|
||||
func send_everyone(topic: string, event: Event):
|
||||
func send_everyone(route_id: string, event: Event, ack: i16):
|
||||
on HOST_PEER_ID:
|
||||
-- retrieve all subscribers of a topic
|
||||
subscribers <- findSubscribers(topic)
|
||||
subscribers <- resolveRoute(route_id, ack)
|
||||
-- iterate through them
|
||||
for sub <- subscribers par:
|
||||
call_subscriber(sub, event)
|
||||
|
@ -1,3 +1,9 @@
|
||||
import initTopicAndSubscribeBlocking, findSubscribers from "@fluencelabs/aqua-dht/pubsub.aqua"
|
||||
module Export
|
||||
import createRouteAndRegisterBlocking, resolveRoute from "@fluencelabs/registry/routing.aqua"
|
||||
import Peer from "@fluencelabs/aqua-lib/builtin.aqua"
|
||||
export createRouteAndRegisterBlocking, resolveRoute, timestamp_sec
|
||||
|
||||
export initTopicAndSubscribeBlocking, findSubscribers
|
||||
|
||||
func timestamp_sec() -> u64:
|
||||
result <- Peer.timestamp_sec()
|
||||
<- result
|
||||
|
@ -1,27 +1,53 @@
|
||||
import { Fluence } from "@fluencelabs/fluence";
|
||||
import { krasnodar } from "@fluencelabs/fluence-network-environment";
|
||||
import { initTopicAndSubscribeBlocking, findSubscribers } from "./generated/export";
|
||||
import {Fluence, KeyPair} from "@fluencelabs/fluence";
|
||||
import { krasnodar, Node } from "@fluencelabs/fluence-network-environment";
|
||||
import {createRouteAndRegisterBlocking, resolveRoute, timestamp_sec} from "./generated/export";
|
||||
|
||||
let local: Node[] = [
|
||||
{
|
||||
peerId: "12D3KooWHBG9oaVx4i3vi6c1rSBUm7MLBmyGmmbHoZ23pmjDCnvK",
|
||||
multiaddr:
|
||||
"/ip4/127.0.0.1/tcp/9990/ws/p2p/12D3KooWHBG9oaVx4i3vi6c1rSBUm7MLBmyGmmbHoZ23pmjDCnvK",
|
||||
},
|
||||
{
|
||||
peerId: "12D3KooWRABanQHUn28dxavN9ZS1zZghqoZVAYtFpoN7FdtoGTFv",
|
||||
multiaddr:
|
||||
"/ip4/127.0.0.1/tcp/9991/ws/p2p/12D3KooWRABanQHUn28dxavN9ZS1zZghqoZVAYtFpoN7FdtoGTFv",
|
||||
},
|
||||
{
|
||||
peerId: "12D3KooWFpQ7LHxcC9FEBUh3k4nSCC12jBhijJv3gJbi7wsNYzJ5",
|
||||
multiaddr:
|
||||
"/ip4/127.0.0.1/tcp/9992/ws/p2p/12D3KooWFpQ7LHxcC9FEBUh3k4nSCC12jBhijJv3gJbi7wsNYzJ5",
|
||||
},
|
||||
];
|
||||
|
||||
async function main() {
|
||||
// connect to the Fluence network
|
||||
await Fluence.start({ connectTo: krasnodar[1] });
|
||||
let topic = "myTopic" + new Date().valueOf();
|
||||
let value = "myValue";
|
||||
console.log("Will create topic", topic);
|
||||
// create topic (if not exists) and subscribe on it
|
||||
let relay = Fluence.getStatus().relayPeerId;
|
||||
await initTopicAndSubscribeBlocking(
|
||||
topic, value, relay, null,
|
||||
(s) => console.log(`node ${s} saved the record`)
|
||||
|
||||
await Fluence.start({ connectTo: local[0] });
|
||||
console.log("%s", await timestamp_sec());
|
||||
console.log(
|
||||
"📗 created a fluence peer %s with relay %s",
|
||||
Fluence.getStatus().peerId,
|
||||
Fluence.getStatus().relayPeerId
|
||||
);
|
||||
// find other peers subscribed to that topic
|
||||
let subscribers = await findSubscribers(topic);
|
||||
let label = "myTopic";
|
||||
let value = "myValue";
|
||||
console.log("Will create topic", label);
|
||||
// create route (if not exists) and register on it
|
||||
let relay = Fluence.getStatus().relayPeerId;
|
||||
let route_id = await createRouteAndRegisterBlocking(
|
||||
label, value, relay, null,
|
||||
(s) => console.log(`node ${s} saved the record`),
|
||||
0
|
||||
);
|
||||
// find other peers on this route
|
||||
console.log("let's find subscribers for %s", route_id);
|
||||
let subscribers = await resolveRoute(route_id, 0);
|
||||
console.log("found subscribers:", subscribers);
|
||||
}
|
||||
|
||||
main()
|
||||
.then(() => process.exit(0))
|
||||
.catch(error => {
|
||||
main().then(() => process.exit(0))
|
||||
.catch(error => {
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
});
|
||||
|
Reference in New Issue
Block a user