Tôi đã học được một bài học nhỏ (con đường khó khăn). Tôi đã tạo một ứng dụng xử lý số chạy trên dịch vụ đám mây Ubuntu AWS EC2 (sử dụng GPU mạnh mẽ) và tôi muốn tạo một giao diện người dùng chỉ để xem tiến trình của nó trong thời gian thực. Do thực tế là nó cần dữ liệu thời gian thực, rõ ràng là tôi cần websockets để đẩy các bản cập nhật.
Nó bắt đầu với một bằng chứng về khái niệm, và hoạt động tuyệt vời. Nhưng sau đó khi chúng tôi muốn cung cấp cho công chúng, chúng tôi phải thêm phiên người dùng, vì vậy chúng tôi cần các tính năng đăng nhập. Và bất kể bạn nhìn vào nó như thế nào, websocket phải biết nó giao dịch với người dùng nào, vì vậy chúng tôi đã sử dụng cách sử dụng websockets để xác thực người dùng . Nó có vẻ hiển nhiên, và nó thật tiện lợi.
Chúng tôi thực sự đã phải dành một khoảng thời gian yên tĩnh để làm cho các kết nối đáng tin cậy. Chúng tôi đã bắt đầu với một số hướng dẫn websocket giá rẻ, nhưng phát hiện ra rằng việc triển khai của chúng tôi không thể tự động kết nối lại khi kết nối bị hỏng. Tất cả đều được cải thiện khi chúng tôi chuyển sang socket-io. Socket-io là phải!
Thành thật mà nói, tôi nghĩ rằng chúng ta đã bỏ lỡ một số tính năng tuyệt vời của socket-io. Socket-io có rất nhiều thứ để cung cấp và tôi chắc chắn rằng, nếu bạn tính đến nó trong thiết kế ban đầu của mình, bạn có thể tận dụng được nhiều hơn thế. Ngược lại, chúng tôi chỉ thay thế các websockets cũ bằng chức năng websocket của socket-io, và chỉ có vậy. (không có phòng, không có kênh, ...) Một thiết kế lại có thể làm cho mọi thứ trở nên mạnh mẽ hơn. Nhưng chúng tôi không có thời gian cho việc đó. Đó là điều cần ghi nhớ cho dự án tiếp theo của chúng tôi.
Tiếp theo, chúng tôi bắt đầu lưu trữ ngày càng nhiều dữ liệu (lịch sử người dùng, hóa đơn, giao dịch, ...). Chúng tôi đã lưu trữ tất cả trong cơ sở dữ liệu AWS dynamicodb và LẠI, chúng tôi đã sử dụng socket-io để giao tiếp các hoạt động CRUD từ front-end tới backend. Tôi nghĩ rằng chúng tôi đã rẽ sai ở đó. Đó là một sai lầm.
- Bởi vì ngay sau khi chúng tôi phát hiện ra rằng các dịch vụ đám mây của Amazon (AWS) cung cấp một số công cụ cân bằng tải / mở rộng quy mô tuyệt vời cho các ứng dụng RESTful .
- Bây giờ chúng tôi có ấn tượng rằng chúng tôi cần phải viết rất nhiều mã để thực hiện bắt tay các thao tác của CRUD.
- Gần đây, chúng tôi đã triển khai tích hợp Paypal. Chúng tôi đã quản lý để làm cho nó hoạt động. Nhưng một lần nữa, tất cả các hướng dẫn đều làm điều đó với các API RESTful . Chúng tôi đã phải viết lại / suy nghĩ lại các ví dụ của họ để triển khai chúng với websockets. Mặc dù vậy, chúng tôi đã làm cho nó hoạt động khá nhanh. Nhưng có cảm giác như chúng ta đang đi ngược lại dòng chảy.
Đã nói tất cả những điều đó, chúng tôi sẽ phát trực tiếp vào tuần tới. Chúng tôi đến đó đúng lúc, mọi thứ đều hoạt động. Và nó nhanh, nhưng nó sẽ mở rộng?