mirror of
https://github.com/fluencelabs/fluent-pad
synced 2025-04-25 00:42:14 +00:00
Peer discovery somewhat works. Still WIP
This commit is contained in:
parent
4f4f7ebea7
commit
09c34a1774
@ -14,20 +14,23 @@ function App() {
|
||||
const service = new FluentPadService(fluenceClient, nickName);
|
||||
service.on('disconnected', (peer: FluentPadClientPeer) => {
|
||||
setPeers((prev) => {
|
||||
prev.delete(peer.peerId);
|
||||
return prev;
|
||||
const res = new Map(prev.entries());
|
||||
res.delete(peer.peerId);
|
||||
return res;
|
||||
});
|
||||
});
|
||||
service.on('newConnected', (peer: FluentPadClientPeer) => {
|
||||
setPeers((prev) => {
|
||||
prev.set(peer.peerId, peer.nickname);
|
||||
return prev;
|
||||
const res = new Map(prev.entries());
|
||||
res.set(peer.peerId, peer.nickname);
|
||||
return res;
|
||||
});
|
||||
});
|
||||
service.on('nameChanged', (peerId: string, newName: string) => {
|
||||
setPeers((prev) => {
|
||||
prev.set(peerId, newName);
|
||||
return prev;
|
||||
const res = new Map(prev.entries());
|
||||
res.set(peerId, newName);
|
||||
return res;
|
||||
});
|
||||
});
|
||||
setService(service);
|
||||
|
@ -56,7 +56,7 @@ export class FluentPadService extends ServiceMultiple {
|
||||
async connect(): Promise<void> {
|
||||
this.registerService();
|
||||
await calls.registerAsFluentPadUser();
|
||||
//await calls.discoverPeers();
|
||||
await calls.discoverPeers();
|
||||
}
|
||||
|
||||
async disconnect(): Promise<void> {
|
||||
@ -129,7 +129,6 @@ export class FluentPadService extends ServiceMultiple {
|
||||
const peers = args[0] as {
|
||||
knownPeers: FluentPadClientPeer[];
|
||||
};
|
||||
console.log(args);
|
||||
setImmediate(this.reconcilePeers.bind(this), peers.knownPeers);
|
||||
return {};
|
||||
}
|
||||
|
@ -22,165 +22,61 @@ export const registerAsFluentPadUser = async () => {
|
||||
|
||||
const data = new Map();
|
||||
data.set('myRelay', myRelay);
|
||||
data.set('value', { peer: myPeerId });
|
||||
data.set('value', { peer: myPeerId, service_id: myRelay });
|
||||
data.set('key', fluentPadProviderKey);
|
||||
|
||||
let particle = await build(fluenceClient.selfPeerId, script, data);
|
||||
await fluenceClient.executeParticle(particle);
|
||||
};
|
||||
|
||||
export const debugDiscoverPeers = async () => {
|
||||
const myPeerId = fluenceClient.selfPeerIdStr;
|
||||
const myRelay = fluenceClient.connection.nodePeerId.toB58String();
|
||||
//const myRelay = relay.peerId;
|
||||
|
||||
let script = `
|
||||
(seq
|
||||
(call myRelay ("dht" "neighborhood") [myRelay] neighbors)
|
||||
(fold neighbors n
|
||||
(par
|
||||
(seq
|
||||
(call n ("dht" "get_providers") [key] providers)
|
||||
(seq
|
||||
(call myRelay ("op" "identiy") [])
|
||||
(call %init_peer_id% ("debug" "notifyDiscovered") [providers])
|
||||
)
|
||||
)
|
||||
(next n)
|
||||
)
|
||||
)
|
||||
)
|
||||
`;
|
||||
|
||||
script = `
|
||||
(seq
|
||||
(call myRelay ("dht" "neighborhood") [myRelay] neighbors)
|
||||
(fold neighbors n
|
||||
(seq
|
||||
(seq
|
||||
(call n ("op" "identity") [] x)
|
||||
(seq
|
||||
(call myRelay ("op" "identity") [])
|
||||
(call %init_peer_id% ("debug" "notifyDiscovered") [key])
|
||||
)
|
||||
)
|
||||
(next n)
|
||||
)
|
||||
)
|
||||
)
|
||||
`;
|
||||
|
||||
script = `
|
||||
(seq
|
||||
(call myRelay ("dht" "neighborhood") [myRelay] neighbors)
|
||||
(par
|
||||
(fold neighbors n
|
||||
(par
|
||||
(seq
|
||||
(call n ("dht" "get_providers") [key] result)
|
||||
(seq
|
||||
(call myRelay ("op" "identity") [])
|
||||
(call %init_peer_id% ("debug" "notifyDiscovered") [result])
|
||||
)
|
||||
)
|
||||
(next n)
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call myRelay ("dht" "get_providers") [key] result)
|
||||
(call %init_peer_id% ("debug" "notifyDiscovered") [result])
|
||||
)
|
||||
)
|
||||
)
|
||||
`;
|
||||
|
||||
// script = `
|
||||
// (seq
|
||||
// (seq
|
||||
// (call myRelay ("dht" "neighborhood") [myRelay] neighbors)
|
||||
// (fold neighbors n
|
||||
// (seq
|
||||
// (call n ("dht" "get_providers") [key] result[])
|
||||
// (next n)
|
||||
// )
|
||||
// )
|
||||
// )
|
||||
// (call %init_peer_id% ("debug" "notifyDiscovered") [result])
|
||||
// )
|
||||
// `;
|
||||
|
||||
// script = `
|
||||
// (seq
|
||||
// (seq
|
||||
// (call myRelay ("dht" "neighborhood") [myRelay] neighbors)
|
||||
// (fold neighbors n
|
||||
// (seq
|
||||
// (call n ("op" "identity") [])
|
||||
// (next n)
|
||||
// )
|
||||
// )
|
||||
// )
|
||||
// (call %init_peer_id% ("debug" "notifyDiscovered") [key])
|
||||
// )
|
||||
// `;
|
||||
|
||||
// script = `
|
||||
// (seq
|
||||
// (call myRelay ("dht" "neighborhood") [myRelay] result)
|
||||
// (call %init_peer_id% ("debug" "notifyDiscovered") [result])
|
||||
// )`;
|
||||
|
||||
// script = `
|
||||
// (seq
|
||||
// (call myRelay ("dht" "get_providers") [key] result)
|
||||
// (call %init_peer_id% ("debug" "notifyDiscovered") [result])
|
||||
// )`;
|
||||
|
||||
const data = new Map();
|
||||
data.set('key', fluentPadProviderKey);
|
||||
data.set('myPeerID', myPeerId);
|
||||
data.set('myRelay', myRelay);
|
||||
|
||||
let particle = await build(fluenceClient.selfPeerId, script, data);
|
||||
await fluenceClient.executeParticle(particle);
|
||||
};
|
||||
|
||||
(window as any).debugDiscoverPeers = debugDiscoverPeers;
|
||||
|
||||
export const discoverPeers = async () => {
|
||||
const myPeerId = fluenceClient.selfPeerId.toB58String();
|
||||
const myPeerId = fluenceClient.selfPeerIdStr;
|
||||
const myRelay = fluenceClient.connection.nodePeerId.toB58String();
|
||||
|
||||
let script = `
|
||||
let discoveryProcedure = (name, binding) => `(fold ${name} ${binding}
|
||||
(par
|
||||
(seq
|
||||
(call ${binding}.$.service_id ("op" "identity") [])
|
||||
(seq
|
||||
(call myRelay ("dht" "neighborhood") [key] neighbors)
|
||||
(fold neighbors n
|
||||
(call ${binding}.$.peer (serviceId "discover") [] discovery_result)
|
||||
(seq
|
||||
(call n ("dht" "get_providers") [key] providers)
|
||||
(next n)
|
||||
)
|
||||
)
|
||||
)
|
||||
(fold providers p
|
||||
(call ${binding}.$.service_id ("op" "identity") [])
|
||||
(seq
|
||||
(seq
|
||||
(call p.$.peer (serviceId "discover") [] discovery_result)
|
||||
(seq
|
||||
(call myRelay ("op" "identiy") [])
|
||||
(call myRelay ("op" "identity") [])
|
||||
(call %init_peer_id% (serviceId "notifyDiscovered") [discovery_result])
|
||||
)
|
||||
)
|
||||
(next p)
|
||||
)
|
||||
)
|
||||
(next ${binding})
|
||||
)
|
||||
)`;
|
||||
|
||||
let script = `
|
||||
(seq
|
||||
(call myRelay ("dht" "get_providers") [key] providers)
|
||||
(seq
|
||||
${discoveryProcedure('providers', 'p')}
|
||||
(seq
|
||||
(call myRelay ("dht" "neighborhood") [myRelay] neighbors)
|
||||
(fold neighbors n
|
||||
(par
|
||||
(seq
|
||||
(call n ("dht" "get_providers") [key] providers1)
|
||||
${discoveryProcedure('providers1', 'p1')}
|
||||
)
|
||||
(next n)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)`;
|
||||
|
||||
const data = new Map();
|
||||
data.set('serviceId', fluentPadServiceId);
|
||||
data.set('myRelay', myRelay);
|
||||
data.set('myPeerId', myPeerId);
|
||||
data.set('key', fluentPadProviderKey);
|
||||
data.set('myPeerID', myPeerId);
|
||||
data.set('myRelay', myRelay);
|
||||
|
||||
let particle = await build(fluenceClient.selfPeerId, script, data);
|
||||
await fluenceClient.executeParticle(particle);
|
||||
|
@ -1,2 +1,2 @@
|
||||
export const fluentPadServiceId = 'fluence/fluent-pad';
|
||||
export const fluentPadProviderKey = 'fluence/fluent-pad-user';
|
||||
export const fluentPadProviderKey = 'fluence/fluent-pad-user/v3';
|
||||
|
Loading…
x
Reference in New Issue
Block a user