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);
|
const service = new FluentPadService(fluenceClient, nickName);
|
||||||
service.on('disconnected', (peer: FluentPadClientPeer) => {
|
service.on('disconnected', (peer: FluentPadClientPeer) => {
|
||||||
setPeers((prev) => {
|
setPeers((prev) => {
|
||||||
prev.delete(peer.peerId);
|
const res = new Map(prev.entries());
|
||||||
return prev;
|
res.delete(peer.peerId);
|
||||||
|
return res;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
service.on('newConnected', (peer: FluentPadClientPeer) => {
|
service.on('newConnected', (peer: FluentPadClientPeer) => {
|
||||||
setPeers((prev) => {
|
setPeers((prev) => {
|
||||||
prev.set(peer.peerId, peer.nickname);
|
const res = new Map(prev.entries());
|
||||||
return prev;
|
res.set(peer.peerId, peer.nickname);
|
||||||
|
return res;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
service.on('nameChanged', (peerId: string, newName: string) => {
|
service.on('nameChanged', (peerId: string, newName: string) => {
|
||||||
setPeers((prev) => {
|
setPeers((prev) => {
|
||||||
prev.set(peerId, newName);
|
const res = new Map(prev.entries());
|
||||||
return prev;
|
res.set(peerId, newName);
|
||||||
|
return res;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
setService(service);
|
setService(service);
|
||||||
|
@ -56,7 +56,7 @@ export class FluentPadService extends ServiceMultiple {
|
|||||||
async connect(): Promise<void> {
|
async connect(): Promise<void> {
|
||||||
this.registerService();
|
this.registerService();
|
||||||
await calls.registerAsFluentPadUser();
|
await calls.registerAsFluentPadUser();
|
||||||
//await calls.discoverPeers();
|
await calls.discoverPeers();
|
||||||
}
|
}
|
||||||
|
|
||||||
async disconnect(): Promise<void> {
|
async disconnect(): Promise<void> {
|
||||||
@ -129,7 +129,6 @@ export class FluentPadService extends ServiceMultiple {
|
|||||||
const peers = args[0] as {
|
const peers = args[0] as {
|
||||||
knownPeers: FluentPadClientPeer[];
|
knownPeers: FluentPadClientPeer[];
|
||||||
};
|
};
|
||||||
console.log(args);
|
|
||||||
setImmediate(this.reconcilePeers.bind(this), peers.knownPeers);
|
setImmediate(this.reconcilePeers.bind(this), peers.knownPeers);
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
@ -22,165 +22,61 @@ export const registerAsFluentPadUser = async () => {
|
|||||||
|
|
||||||
const data = new Map();
|
const data = new Map();
|
||||||
data.set('myRelay', myRelay);
|
data.set('myRelay', myRelay);
|
||||||
data.set('value', { peer: myPeerId });
|
data.set('value', { peer: myPeerId, service_id: myRelay });
|
||||||
data.set('key', fluentPadProviderKey);
|
data.set('key', fluentPadProviderKey);
|
||||||
|
|
||||||
let particle = await build(fluenceClient.selfPeerId, script, data);
|
let particle = await build(fluenceClient.selfPeerId, script, data);
|
||||||
await fluenceClient.executeParticle(particle);
|
await fluenceClient.executeParticle(particle);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const debugDiscoverPeers = async () => {
|
export const discoverPeers = async () => {
|
||||||
const myPeerId = fluenceClient.selfPeerIdStr;
|
const myPeerId = fluenceClient.selfPeerIdStr;
|
||||||
const myRelay = fluenceClient.connection.nodePeerId.toB58String();
|
const myRelay = fluenceClient.connection.nodePeerId.toB58String();
|
||||||
//const myRelay = relay.peerId;
|
|
||||||
|
let discoveryProcedure = (name, binding) => `(fold ${name} ${binding}
|
||||||
|
(par
|
||||||
|
(seq
|
||||||
|
(call ${binding}.$.service_id ("op" "identity") [])
|
||||||
|
(seq
|
||||||
|
(call ${binding}.$.peer (serviceId "discover") [] discovery_result)
|
||||||
|
(seq
|
||||||
|
(call ${binding}.$.service_id ("op" "identity") [])
|
||||||
|
(seq
|
||||||
|
(call myRelay ("op" "identity") [])
|
||||||
|
(call %init_peer_id% (serviceId "notifyDiscovered") [discovery_result])
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(next ${binding})
|
||||||
|
)
|
||||||
|
)`;
|
||||||
|
|
||||||
let script = `
|
let script = `
|
||||||
(seq
|
(seq
|
||||||
(call myRelay ("dht" "neighborhood") [myRelay] neighbors)
|
(call myRelay ("dht" "get_providers") [key] providers)
|
||||||
(fold neighbors n
|
(seq
|
||||||
(par
|
${discoveryProcedure('providers', 'p')}
|
||||||
(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
|
(seq
|
||||||
(call myRelay ("dht" "neighborhood") [myRelay] neighbors)
|
(call myRelay ("dht" "neighborhood") [myRelay] neighbors)
|
||||||
(par
|
(fold neighbors n
|
||||||
(fold neighbors n
|
(par
|
||||||
(par
|
(seq
|
||||||
(seq
|
(call n ("dht" "get_providers") [key] providers1)
|
||||||
(call n ("dht" "get_providers") [key] result)
|
${discoveryProcedure('providers1', 'p1')}
|
||||||
(seq
|
|
||||||
(call myRelay ("op" "identity") [])
|
|
||||||
(call %init_peer_id% ("debug" "notifyDiscovered") [result])
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(next n)
|
|
||||||
)
|
)
|
||||||
)
|
(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 myRelay = fluenceClient.connection.nodePeerId.toB58String();
|
|
||||||
|
|
||||||
let script = `
|
|
||||||
(seq
|
|
||||||
(seq
|
|
||||||
(call myRelay ("dht" "neighborhood") [key] neighbors)
|
|
||||||
(fold neighbors n
|
|
||||||
(seq
|
|
||||||
(call n ("dht" "get_providers") [key] providers)
|
|
||||||
(next n)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(fold providers p
|
|
||||||
(seq
|
|
||||||
(seq
|
|
||||||
(call p.$.peer (serviceId "discover") [] discovery_result)
|
|
||||||
(seq
|
|
||||||
(call myRelay ("op" "identiy") [])
|
|
||||||
(call %init_peer_id% (serviceId "notifyDiscovered") [discovery_result])
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(next p)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)`;
|
|
||||||
|
|
||||||
const data = new Map();
|
const data = new Map();
|
||||||
data.set('serviceId', fluentPadServiceId);
|
data.set('serviceId', fluentPadServiceId);
|
||||||
data.set('myRelay', myRelay);
|
|
||||||
data.set('myPeerId', myPeerId);
|
|
||||||
data.set('key', fluentPadProviderKey);
|
data.set('key', fluentPadProviderKey);
|
||||||
|
data.set('myPeerID', myPeerId);
|
||||||
|
data.set('myRelay', myRelay);
|
||||||
|
|
||||||
let particle = await build(fluenceClient.selfPeerId, script, data);
|
let particle = await build(fluenceClient.selfPeerId, script, data);
|
||||||
await fluenceClient.executeParticle(particle);
|
await fluenceClient.executeParticle(particle);
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
export const fluentPadServiceId = 'fluence/fluent-pad';
|
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