socket = {
const socket = new WebSocket("wss://atlas-stream.ripe.net/stream/");
socket.onmessage = function (event) {
const r = JSON.parse(event.data)[1];
const rtts = r.result ? r.result.map((r) => r.rtt).filter((r) => r) : [];
const rtt = d3.min(rtts);
if (rtt < 10.0 && Math.random() < 100 * chances.get(r.probe.country_code)) {
if (r.dst_addr === undefined) return;
let [i, c] = [ipmap.get(r.dst_addr), coordinates.get(r.prb_id)];
let [clat, clon, ilat, ilon] = [c?.lat, c?.lon, i?.lat, i?.lon];
if (
ilat === undefined ||
ilon === undefined ||
clat === undefined ||
clon === undefined
)
return;
let result = [
{
startLat: ilat,
startLng: ilon,
endLat: clat,
endLng: clon,
altitude: 0,
color: r.dst_addr?.includes(":") ? "red" : "blue"
}
];
mutable results = mutable results.concat(result).slice(-100);
}
};
socket.onopen = function (event) {
for (let param of params)
this.send(JSON.stringify(["atlas_subscribe", param]));
};
return socket;
}