Ho imparato una piccola lezione (nel modo più duro). Ho creato un'applicazione molto impegnativa che gira sui servizi cloud Ubuntu AWS EC2 (utilizza potenti GPU) e volevo creare un front-end per osservarne i progressi in tempo reale. Dato che necessitavano di dati in tempo reale, era ovvio che avevo bisogno di websocket per eseguire il push degli aggiornamenti.
È iniziato con una prova di concetto e ha funzionato alla grande. Ma poi, quando volevamo renderlo disponibile al pubblico, dovevamo aggiungere la sessione utente, quindi avevamo bisogno di funzionalità di accesso. E non importa come lo guardi, il websocket deve sapere con quale utente ha a che fare, quindi abbiamo scelto la scorciatoia di usare i websocket per autenticare gli utenti . Sembrava ovvio ed era conveniente.
In realtà abbiamo dovuto passare un po 'di tempo in silenzio per rendere affidabili i collegamenti. Abbiamo iniziato con alcuni tutorial websocket economici, ma abbiamo scoperto che la nostra implementazione non era in grado di riconnettersi automaticamente quando la connessione veniva interrotta. Tutto è migliorato quando siamo passati a socket-io. Socket-io è un must!
Detto questo, ad essere onesti, penso che ci siamo persi alcune fantastiche funzionalità di socket-io.Socket-io ha molto di più da offrire e sono sicuro che, se lo prendi in considerazione nel tuo progetto iniziale, puoi ottenere di più da esso. Al contrario, abbiamo appena sostituito i vecchi websocket con la funzionalità websocket di socket-io, e basta. (niente stanze, niente canali, ...) Una riprogettazione avrebbe potuto rendere tutto più potente. Ma non abbiamo avuto tempo per quello. È qualcosa da ricordare per il nostro prossimo progetto.
Successivamente abbiamo iniziato a memorizzare sempre più dati (cronologia utente, fatture, transazioni, ...). Abbiamo archiviato tutto in un database AWS dynamodb e, ANCORA, abbiamo utilizzato socket-io per comunicare le operazioni CRUD dal front-end al backend. Penso che abbiamo preso una strada sbagliata lì. È stato un errore.
- Perché poco dopo abbiamo scoperto che i servizi cloud di Amazon (AWS) offrono alcuni ottimi strumenti di bilanciamento del carico / scalabilità per le applicazioni RESTful .
- Ora abbiamo l'impressione di dover scrivere molto codice per eseguire le strette di mano delle operazioni CRUD.
- Recentemente abbiamo implementato l'integrazione con Paypal. Siamo riusciti a farlo funzionare. Ma ancora una volta, tutti i tutorial lo fanno con le API RESTful . Abbiamo dovuto riscrivere / ripensare i loro esempi per implementarli con websocket. Abbiamo fatto in modo che funzionasse abbastanza velocemente. Ma sembra che stiamo andando controcorrente.
Detto questo, andremo in diretta la prossima settimana. Siamo arrivati in tempo, funziona tutto. Ed è veloce, ma scalerà?