P2P cx index

This commit is contained in:
2026-10-28 13:53:25 -07:00
parent 84bab9bbc5
commit 92d6637695
4 changed files with 27 additions and 24 deletions

View File

@ -74,7 +74,7 @@ class CreateLeenkxNode extends LogicNode {
lnxCn.isRelay = property1 == true; lnxCn.isRelay = property1 == true;
lnxCn.onOpen = function() { lnxCn.onOpen = function() {
Leenkx.data.set(net_Url, lnxCn.lastPeerCount); Leenkx.data.set(net_Url, lnxCn.lastPeerIndex);
Leenkx.id.set(net_Url, lnxCn.lastPeerId); Leenkx.id.set(net_Url, lnxCn.lastPeerId);
sock.onopen(); sock.onopen();
}; };

View File

@ -23,7 +23,6 @@ class LeenkxCloseConnectionNode extends LogicNode {
var id:String = inputs.length > 2 ? inputs[2].get() : null; var id:String = inputs.length > 2 ? inputs[2].get() : null;
if (id != null && lnxCn != null) { if (id != null && lnxCn != null) {
lnxCn.peers.remove(id); lnxCn.peers.remove(id);
lnxCn.seenFired.remove(id);
} }
runOutput(0); runOutput(0);
return; return;

View File

@ -26,11 +26,11 @@ class LeenkxClient {
public var peers:Map<String, PeerInfo> = []; public var peers:Map<String, PeerInfo> = [];
public var seen:Map<String, Float> = []; public var seen:Map<String, Float> = [];
public var seenFired:Map<String, Bool> = [];
public var pkToAddress:Map<String, String> = []; public var pkToAddress:Map<String, String> = [];
public var isRelay:Bool = false; public var isRelay:Bool = false;
public var lastPeerCount:Null<Int> = null; public var lastPeerCount:Null<Int> = null;
public var lastPeerId:String = null; public var lastPeerId:String = null;
public var lastPeerIndex:Int = 0;
public var serverAddress:String = null; public var serverAddress:String = null;
public var heartbeatTimer:Null<haxe.Timer> = null; public var heartbeatTimer:Null<haxe.Timer> = null;
@ -545,29 +545,32 @@ class LeenkxClient {
function sawPeer(pk:String, ek:String, identifier:String):Void { function sawPeer(pk:String, ek:String, identifier:String):Void {
var t = now(); var t = now();
var addr = addressFromPk(pk); var addr = addressFromPk(pk);
var myAddr = address(); if (addr == address()) return;
var isSelf = (addr == myAddr); if (!peers.exists(addr) || peers[addr].last + timeout < t) {
var alreadySeen = seenFired.exists(addr); var index = 0;
if (!isSelf) { var taken = true;
if (!peers.exists(addr) || peers[addr].last + timeout < t) { while (taken) {
peers.set(addr, {pk: pk, ek: ek, last: t}); taken = false;
var packet = makePacket({y: PacketType.Ping}); index++;
sendRaw(packet); for (k in peers.keys()) {
} else { if (peers[k].index == index) { taken = true; break; }
var p = peers.get(addr);
p.ek = ek;
p.last = t;
}
if (!alreadySeen) {
seenFired.set(addr, true);
lastPeerId = addr;
if (onOpen != null) onOpen();
if (onSeen != null) onSeen(addr);
if (addr == identifier) {
serverAddress = addr;
if (onServer != null) onServer(addr);
} }
} }
peers.set(addr, {pk: pk, ek: ek, last: t, index: index});
lastPeerIndex = index;
lastPeerId = addr;
if (onOpen != null) onOpen();
if (onSeen != null) onSeen(addr);
if (addr == identifier) {
serverAddress = addr;
if (onServer != null) onServer(addr);
}
var packet = makePacket({y: PacketType.Ping});
sendRaw(packet);
} else {
var p = peers.get(addr);
p.ek = ek;
p.last = t;
} }
} }

View File

@ -22,6 +22,7 @@ typedef PeerInfo = {
var pk:String; var pk:String;
var ek:String; var ek:String;
var last:Float; var last:Float;
var index:Int;
} }
typedef Packet = { typedef Packet = {