Tôi đã xây dựng một ứng dụng Nhắn tin Nhanh hoàn toàn trên @Cloudflare. Nó mất 1 ngày, 3 tệp, 4 tài nguyên... và đã sẵn sàng để mở rộng từ 0 đến hàng triệu. Worker → xác thực & định tuyến Cơ sở dữ liệu D1 → lưu trữ người dùng/mật khẩu User DO → hồ sơ người dùng & bạn bè Conversation DO → tin nhắn Blog sẽ có trong phản hồi, nhưng đây là một cái nhìn nhanh: Thư viện cloudflare/actors đã làm cho nhiều điều này trở nên dễ dàng với các thuộc tính duy trì, quản lý kết nối web socket dễ dàng và gửi tin nhắn đến tất cả người nghe. Nhưng mỗi phần đã làm gì? Xác thực & Định tuyến (Worker + D1) Tất cả các yêu cầu đều đi qua Worker, có thể được xác thực hoặc không. Nếu không được xác thực, các hành động có sẵn là đăng nhập hoặc đăng ký. Khi đã được xác thực, nó có thể chuyển yêu cầu đến một trong các Đối tượng Bền (user hoặc conversation) để thiết lập kết nối web socket. Tất cả thông tin xác thực của người dùng được lưu trữ trong cơ sở dữ liệu D1 (giữ tất cả trong CF cho ví dụ này). Dịch vụ Người dùng (Đối tượng Bền) Giao diện danh sách bạn bè của chúng tôi kết nối trực tiếp với Đối tượng Bền người dùng của chúng tôi qua web socket. Khi chúng tôi cập nhật trạng thái, chúng tôi gửi một tin nhắn đến Đối tượng Bền cá nhân của chúng tôi, sau đó có thể phát sóng qua RPC đến các Đối tượng Bền bạn bè của chúng tôi và xác định xem họ có trực tuyến để gửi cho họ một tin nhắn web socket để cập nhật trực tiếp hay không. Đây cũng là nơi chúng tôi lưu trữ danh sách bạn bè của mình trong cơ sở dữ liệu SQLite được giới hạn cho người dùng của chúng tôi. Dịch vụ Cuộc trò chuyện (Đối tượng Bền) Mỗi cuộc trò chuyện cá nhân giữa hai người dùng sẽ có một phiên bản DO riêng. Trách nhiệm duy nhất của nó là lưu trữ tin nhắn, gửi thông báo (qua sockets) khi có tin nhắn mới được gửi, và gửi thông báo khi một người dùng bắt đầu gõ để chúng tôi có thể thấy "Người đang gõ..." TLDR; Xây dựng ứng dụng vì niềm vui để sống lại những kỷ niệm tuổi thơ là... xứng đáng.