Puoi scrivere un sistema come quello in qualsiasi lingua completa di Turing. Non è davvero così complicato. Ecco il principio base di alto livello (per un modo di farlo, probabilmente lo puoi fare in altri modi):
Hai una lista di tutte le persone in attesa di una partita. (Non necessariamente una lista, ma una struttura dati che può contenere più persone.) Quando si presenta un nuovo candidato, confrontali con la lista e vedi se trovi una corrispondenza adatta. In tal caso, rimuovere la corrispondenza dall'elenco e inviare al sistema di ciascun giocatore una notifica che è necessario connettersi con l'altro sistema. Altrimenti, aggiungi il nuovo arrivato alla lista. Se qualcuno si stanca di aspettare e disconnette, rimuovilo dalla lista.
I dettagli su come implementare questo ovviamente variano molto a seconda esattamente di ciò che sta facendo il tuo sistema. Nel caso più semplice, non esiste una corrispondenza inadatta, quindi la tua lista d'attesa non sarà mai più lunga di un giocatore. All'altro estremo, se la tua lista contiene probabilmente migliaia di giocatori per qualsiasi motivo, potresti voler cercare di ottimizzare la ricerca in qualche modo. Ma nel territorio intermedio, la tecnica che ho appena descritto funzionerà probabilmente bene.