30 lines
802 B
Plaintext
30 lines
802 B
Plaintext
// NAT Punchthrough Server
|
|
// This server helps two chess clients find each other through NAT
|
|
// The server coordinates the punchthrough by having both clients
|
|
// connect to each other simultaneously
|
|
|
|
var json = use('json');
|
|
var waiting_client = null;
|
|
var match_id = 0;
|
|
|
|
$_.portal(e => {
|
|
log.console("NAT server: received connection request");
|
|
|
|
if (!is_actor(e.actor))
|
|
send(e, {reason: "Must provide the actor you want to connect."});
|
|
|
|
if (waiting_client) {
|
|
log.console(`sending out messages! to ${json.encode(e.actor)} and ${json.encode(waiting_client.actor)}`)
|
|
send(waiting_client, e.actor)
|
|
send(e, waiting_client.actor)
|
|
|
|
waiting_client = undefined
|
|
|
|
return
|
|
}
|
|
|
|
waiting_client = e
|
|
|
|
log.console(`actor ${json.encode(e.actor)} is waiting ...`)
|
|
}, 4000);
|