1+ package samples .rpc ;
2+
3+ import realtime .pubsub .*;
4+
5+ import java .util .Date ;
6+ import java .util .Map ;
7+ import java .util .logging .Level ;
8+ import java .util .logging .Logger ;
9+
10+ public class Server {
11+
12+ public static void main (String [] args ) throws Exception {
13+ var logger = Logger .getLogger (samples .ClientDemoMinimal .class .getName ());
14+
15+ var accessToken = System .getenv ("ACCESS_TOKEN" );
16+ var appId = System .getenv ("APP_ID" );
17+
18+ var config = new RealtimeClientConfig (() -> String .format ("wss://genesis.r7.21no.de/apps/%s?access_token=%s" , appId , accessToken ));
19+ var client = new RealtimeClient (config );
20+
21+ client .on ("session.started" , (Object ... params ) -> {
22+ client .subscribeRemoteTopic ("secure/inbound" );
23+ });
24+
25+ client .on ("secure/inbound.presence" , (Object ... eventArgs ) -> {
26+ var messageEvent = (IncomingMessage ) eventArgs [0 ];
27+
28+ var presenceMessage = PresenceMessage .from (messageEvent );
29+ if (presenceMessage .getStatus () == PresenceStatus .CONNECTED ) {
30+ logger .info ("Client " + presenceMessage .getConnectionId () + " connected..." );
31+ } else if (presenceMessage .getStatus () == PresenceStatus .DISCONNECTED ) {
32+ logger .info ("Client " + presenceMessage .getConnectionId () + " disconnected..." );
33+ }
34+ });
35+
36+ client .on ("secure/inbound.gettime" , (Object ... eventArgs ) -> {
37+ var replyFn = (ReplyFunction ) eventArgs [1 ];
38+
39+ logger .info ("Responding to gettime request..." );
40+
41+ // Send a reply
42+ try {
43+ var waitFor = replyFn .reply (Map .of ("time" , new Date ()), "ok" , false );
44+ waitFor .waitForAck ().thenAccept (ack -> logger .info ("Acknowledgment received." ));
45+ } catch (Exception e ) {
46+ logger .log (Level .SEVERE , "Failed to send reply" , e );
47+ }
48+ });
49+
50+ client .connect ();
51+ }
52+ }
0 commit comments