@@ -17,7 +17,7 @@ public class RtaWebsocketClient extends WebSocketClient {
1717 private String connectionId ;
1818 private final Logger logger ;
1919 private final String xuid ;
20- private boolean firstConnectionId = true ;
20+ private boolean isFirstConnection = true ;
2121 private CompletableFuture <String > connectionIdFuture = new CompletableFuture <>();
2222
2323 /**
@@ -68,46 +68,44 @@ public void onOpen(ServerHandshake serverHandshake) {
6868 */
6969 @ Override
7070 public void onMessage (String message ) {
71- if (message .contains ("ConnectionId" ) && firstConnectionId ) {
72- Object [] parts = Constants .GSON .fromJson (message , Object [].class );
73- connectionId = ((Map <String , String >) parts [4 ]).get ("ConnectionId" );
74- connectionIdFuture .complete (connectionId );
75- firstConnectionId = false ;
71+ // [Type, SequenceId, ...]
72+ // Subscribe: [type, sequenceId, status, subscriptionId, data]
73+ // Unsubscribe: [type, sequenceId, status]
74+ // Event: [type, sequenceId, data]
7675
77- // Let xbox know we want friend updates
78- send ("[1,2,\" https://social.xboxlive.com/users/xuid(" + this .xuid + ")/friends\" ]" );
79- } else {
80- // [Type, SequenceId, ...]
81- // Subscribe: [type, sequenceId, status, subscriptionId, data]
82- // Unsubscribe: [type, sequenceId, status]
83- // Event: [type, sequenceId, data]
76+ // Handle the message
77+ Object [] parts = Constants .GSON .fromJson (message , Object [].class );
78+ MessageType type = MessageType .fromValue (((Double ) parts [0 ]).intValue ());
79+ switch (type ) {
80+ case Subscribe :
81+ logger .debug ("RTA Websocket [" + connectionId + "] subscribed: " + message );
82+ if (message .contains ("ConnectionId" ) && isFirstConnection ) {
83+ connectionId = ((Map <String , String >) parts [4 ]).get ("ConnectionId" );
84+ connectionIdFuture .complete (connectionId );
85+ isFirstConnection = false ;
8486
85- // Handle the message
86- Object [] parts = Constants .GSON .fromJson (message , Object [].class );
87- MessageType type = MessageType .fromValue (((Double ) parts [0 ]).intValue ());
88- switch (type ) {
89- case Subscribe :
90- logger .debug ("RTA Websocket [" + connectionId + "] subscribed: " + message );
91- break ;
92- case Unsubscribe :
93- logger .debug ("RTA Websocket [" + connectionId + "] unsubscribed: " + message );
94- break ;
95- case Event :
96- logger .debug ("RTA Websocket [" + connectionId + "] event: " + message );
97- // Get data json object
98- Map <String , Object > data = (Map <String , Object >) parts [2 ];
99- if (data .getOrDefault ("NotificationType" , "" ).equals ("IncomingFriendRequestCountChanged" )) {
100- logger .debug ("RTA Websocket [" + connectionId + "] friend request: " + message );
101- sessionManager .friendManager ().acceptPendingFriendRequests ();
102- }
103- break ;
104- case Resync :
105- logger .debug ("RTA Websocket [" + connectionId + "] resync: " + message );
106- break ;
107- default :
108- logger .debug ("RTA Websocket [" + connectionId + "] unknown: " + message );
109- break ;
110- }
87+ // Let xbox know we want friend updates
88+ send ("[1,2,\" https://social.xboxlive.com/users/xuid(" + this .xuid + ")/friends\" ]" );
89+ }
90+ break ;
91+ case Unsubscribe :
92+ logger .debug ("RTA Websocket [" + connectionId + "] unsubscribed: " + message );
93+ break ;
94+ case Event :
95+ logger .debug ("RTA Websocket [" + connectionId + "] event: " + message );
96+ // Get data json object
97+ Map <String , Object > data = (Map <String , Object >) parts [2 ];
98+ if (data .getOrDefault ("NotificationType" , "" ).equals ("IncomingFriendRequestCountChanged" )) {
99+ logger .debug ("RTA Websocket [" + connectionId + "] friend request: " + message );
100+ sessionManager .friendManager ().acceptPendingFriendRequests ();
101+ }
102+ break ;
103+ case Resync :
104+ logger .debug ("RTA Websocket [" + connectionId + "] resync: " + message );
105+ break ;
106+ default :
107+ logger .debug ("RTA Websocket [" + connectionId + "] unknown: " + message );
108+ break ;
111109 }
112110 }
113111
0 commit comments