Ich habe eine kleine Lektion gelernt (auf die harte Tour). Ich habe eine Anwendung zum Knacken von Zahlen erstellt, die auf Ubuntu AWS EC2-Clouddiensten ausgeführt wird (verwendet leistungsstarke GPUs), und ich wollte ein Front-End dafür erstellen, um den Fortschritt in Echtzeit zu verfolgen. Aufgrund der Tatsache, dass es Echtzeitdaten benötigte, war es offensichtlich, dass ich Websockets benötigte, um die Updates zu pushen.
Es begann mit einem Proof of Concept und funktionierte hervorragend. Als wir es dann der Öffentlichkeit zugänglich machen wollten, mussten wir eine Benutzersitzung hinzufügen, sodass wir Anmeldefunktionen benötigten. Unabhängig davon, wie Sie es betrachten, muss der Websocket wissen, mit welchem Benutzer er sich befasst. Daher haben wir die Verknüpfung verwendet, die Websockets zur Authentifizierung der Benutzer zu verwenden . Es schien offensichtlich und es war bequem.
Wir mussten tatsächlich einige Zeit ruhig verbringen, um die Verbindungen zuverlässig zu machen. Wir haben mit einigen billigen Websocket-Tutorials begonnen, aber festgestellt, dass unsere Implementierung nicht automatisch wieder eine Verbindung herstellen konnte, wenn die Verbindung unterbrochen wurde. Das alles hat sich verbessert, als wir auf Socket-Io umgestiegen sind. Socket-io ist ein Muss!
Um ehrlich zu sein, haben wir einige großartige Socket-Io-Funktionen verpasst. Socket-io hat noch viel mehr zu bieten, und ich bin sicher, wenn Sie es bei Ihrem ursprünglichen Entwurf berücksichtigen, können Sie mehr daraus machen. Im Gegensatz dazu haben wir gerade die alten Websockets durch die Websocket-Funktionalität von Socket-Io ersetzt, und das war es. (keine Räume, keine Kanäle, ...) Eine Neugestaltung hätte alles leistungsfähiger machen können. Dafür hatten wir aber keine Zeit. Das ist etwas, an das wir uns bei unserem nächsten Projekt erinnern sollten.
Als nächstes haben wir begonnen , immer mehr Daten zu speichern (Benutzerhistorie, Rechnungen, Transaktionen, ...). Wir haben alles in einer AWS-Dynamodb-Datenbank gespeichert und WIEDER haben wir Socket-Io verwendet, um die CRUD-Operationen vom Front-End zum Back-End zu kommunizieren. Ich denke, wir sind dort falsch abgebogen. Es war ein Fehler.
- Denn kurz nachdem wir herausgefunden hatten, dass die Cloud-Services (AWS) von Amazon einige großartige Tools für den Lastenausgleich / die Skalierung für RESTful-Anwendungen bieten .
- Wir haben jetzt den Eindruck, dass wir viel Code schreiben müssen, um die Handshakes der CRUD-Operationen auszuführen .
- Kürzlich haben wir die Paypal-Integration implementiert. Wir haben es geschafft, es zum Laufen zu bringen. Aber auch hier machen es alle Tutorials mit RESTful-APIs . Wir mussten ihre Beispiele umschreiben / überdenken, um sie mit Websockets zu implementieren. Wir haben es aber ziemlich schnell zum Laufen gebracht. Aber es fühlt sich so an, als würden wir gegen den Strom gehen.
Nachdem wir das alles gesagt haben, werden wir nächste Woche live gehen. Wir sind rechtzeitig dort angekommen, alles funktioniert. Und es ist schnell, aber wird es skalieren?