Sapessi cosa sto "per facendo io"...
Non so nemmeno io stesso se l'ho capito bene né se funzioni
Per spiegarlo bene, dovrei usare circa 4.000 parole (e magari avere prima le idee più chiare).
Ci provo ugualmente (anche se mi sa tanto che questi miei post prolissi li leggo solo io
).
Comunicazioni Client (b4a) - Server (b4j) websocket.
Lato Client c'è una UNICA routine, creata da Erel, che riceve i messaggi (stringa JSON) dal server.
Questa routine elabora la JSON, ne ricava il nome della routine del client da lanciare ed una List che contiene i parametri:
Private Sub ws_TextMessage(msg As String)
dall'interno della quale viene chiamata la routine che il server vuole lanciare sul client, ad esempio può chiamare:
MiaRoutine(params As List)
ed il parametro è appunto sempre una
List (params).
Ora, l'ideale sarebbe che dalla parte opposta, ovvero sul server, la cosa funzionasse nello stesso modo, ovvero ci fosse un'UNICA routine che ricevesse un JSON dal client e che "smistasse" le chiamate, ovvero ricavasse un nome di una routine del server da lanciare e gli passasse dei parametri.
Beh, non è così; per come è stata realizzato il tutto (da Erel), in realtà il client chiama direttamente una delle tante routine del server (routine che stanno nella classe che contiene il websocket) e come parametro devono ricevere una
Map.
Quindi quello che ho tentato di fare (e sembra funzionare) è stato di creare un "metodo" per ottenere questa funzionalità, ovvero rendere omogenea la cosa, cioè anche lato server c'è una sola routine da chiamare che a sua volta lancia quella richiesta dal client, con parametri.
Inoltre, non mi piace che i parametri siano una List, preferisco una Map (in modo da poter ricavarli tramite nome, anziché numero ordinale), quindi ho cambiato anche questa cosa.
Tutto questo... a che pro? Certo, dal mio punto di vista, il tutto così è migliore ma... quanto mi rende? Quanto mi sarà utile? Non sarebbe stato meglio occuparsi di Penny? Domanda retorica
[Si è almeno capito ciò che ho scritto?
]
P.S. dimenticavo: queste modifiche rendono anche possibile cifrare/decifrare le stringhe JSON di comunicazione (in entrambi i versi).