Comment ce site est fait
Global IP Map montre en direct d'où se connectent ses visiteurs. Voici ce qu'il y a derrière, pour ceux que la technique intéresse : aucun serveur à entretenir, une seule « pièce » où tout le monde se retrouve, un globe dessiné à la main, et aucune adresse conservée.
Aucun serveur à entretenir
Le site tourne chez Cloudflare, sur son offre Workers. La page elle-même (HTML, styles, scripts) est un fichier statique servi depuis le réseau de Cloudflare, sans passer par notre programme : elle reste disponible même quand le reste s'arrête.
La partie vivante est une connexion temps réel (WebSocket) entre votre navigateur et un objet unique, un « Durable Object » que nous appelons le Monde. Il reçoit toutes les connexions, compte les points, diffuse les arrivées, les départs et les phrases du chat. Il n'y a qu'un seul Monde : c'est ce qui permet de compter sans jamais se contredire. Quand rien ne se passe, il s'endort ; les connexions restent ouvertes pendant son sommeil grâce à l'hibernation des WebSockets (documentation Cloudflare).
D'où vient votre position
Cloudflare joint à chaque requête le pays, la région, une position approximative, l'opérateur et le numéro de son réseau (champ request.cf). Nous n'avons donc aucune base de géolocalisation à acheter ni à tenir à jour. Avant d'afficher quoi que ce soit, la position est arrondie au demi-degré, soit environ 50 km, et seule la région est nommée, jamais la ville.
Le globe
Le globe n'utilise pas de bibliothèque 3D. Les continents sont une trame de points, un tous les 1,2° environ, calculée une fois pour toutes à partir des contours de Natural Earth (domaine public). À chaque image, le navigateur projette ces points sur un disque (projection orthographique) et les dessine en Canvas 2D. Ce choix vient des téléphones : la première version, avec une bibliothèque 3D, obtenait 26 au score de performance mobile de Lighthouse ; celle-ci obtient 98.
Un point par jour et par adresse, sans garder l'adresse
Chaque adresse rapporte un point par jour à son pays, après dix secondes de présence. Pour reconnaître une adresse déjà comptée sans la conserver, nous gardons une empreinte : un HMAC-SHA-256 du jour et de l'adresse, calculé avec une clé secrète rangée hors de la base. Sans la clé, l'empreinte ne permet pas de retrouver l'adresse. Les empreintes sont effacées à minuit UTC. En IPv6, l'empreinte porte sur le bloc /64, celui qu'un opérateur attribue au minimum à un abonné (RFC 6177) : adresse par adresse, un seul abonné pourrait marquer des milliers de points.
Gratuit, avec des limites
Le site tient dans l'offre gratuite de Cloudflare : 100 000 requêtes par jour, remises à zéro à minuit UTC (limites). Tout est écrit pour en consommer le moins possible : les compteurs s'écrivent par lots, un robot écarté ne coûte aucune écriture, une seule alarme par heure réveille le Monde. Si un jour le quota est dépassé, le direct s'interrompt jusqu'à minuit UTC et la page le dit ; la page, elle, reste servie.
Ce que nous ne faisons pas
Pas de cookie, pas de traceur publicitaire, pas de compte à créer, pas de texte libre dans le chat : des réactions et des phrases prêtes, que chacun lit dans sa langue. Le code est en TypeScript de bout en bout, et les règles du jeu sont écrites une seule fois, partagées entre le serveur et la démo.
À lire aussi
- Combien de robots se connectent ici ?
Une part du trafic d'un site n'est pas humaine. Comment Global IP Map distingue les robots des visiteurs, ce que compte le chiffre affiché en haut de la carte, et ce qu'il ne compte pas.
- Qu'est-ce qu'une adresse IP ?
Ce que votre adresse IP dit de vous et ce qu'elle ne dit pas, la différence entre IPv4 et IPv6, entre adresse publique et privée, et ce que vaut la géolocalisation.