Đây là phần đầu tiên trong một loạt các bài đăng, trong đó tôi sẽ mô tả các bước để xây dựng danh sách VIỆC CẦN LÀM cho phép hợp tác trong thời gian thực. Điều này có thể hữu ích nếu bạn muốn chia sẻ một số nhiệm vụ với bạn bè và quan sát tiến độ trong thời gian thực.
Trong bài đăng này, tôi sẽ mô tả phần phụ trợ sẽ bao gồm:
Thiết lập API Gateway khá đơn giản. Sử dụng cấu trúc WebSocketApi, chúng ta chỉ cần chỉ định các trình xử lý lambda chịu trách nhiệm xử lý các máy khách đang kết nối và ngắt kết nối.
Ngoài ra, để thực sự hiển thị API, chúng ta cần tạo một giai đoạn.
Ngôn ngữ tôi chọn cho lambdas là TypeScript nên tôi sẽ sử dụng cấu trúc NodejsFunction để thiết lập lambdas với hỗ trợ TypeScript.
Bạn có thể nhận thấy rằng tôi đang chuyển TABLE_NAMEdưới dạng biến môi trường cho hàm của mình. Tôi cần một bảng DynamoDB để quản lý các máy khách được kết nối. Hãy thiết lập bảng này với CDK.
Được rồi, tôi vẫn cần thêm một tuyến bổ sung vào API WebSocket của mình để xử lý việc thêm các việc cần làm.
Bước cuối cùng là thiết lập các quyền. Các lambdas của chúng ta cần truy cập vào bảng động lưu trữ các kết nối. Điều này rất dễ dàng với CDK.
Nó addTodoHandlercũng cần một quyền để đăng thông báo cho các máy khách WebSocket được kết nối.
Phần cơ sở hạ tầng đã xong, chúng ta vẫn cần viết các hàm lambda để:
Trong lambda này, tôi sẽ duy trì ứng dụng khách connectionIdvào một bảng dynamicoDB để nó có thể được tham chiếu sau này.
Tất nhiên khi khách hàng ngắt kết nối, tôi cần xóa nó khỏi bảng.
Cuối cùng nhưng không kém phần quan trọng, chúng tôi muốn cho phép các khách hàng được kết nối đăng thông báo. Thông báo này sẽ được phát cho tất cả các máy khách được kết nối với ApiGatewayManagementApi.
Lưu ý rằng chúng tôi không tiếp tục gửi tin nhắn (điều này có thể sẽ được bổ sung trong phần tiếp theo).
Để kiểm tra API WebSocket, tôi sẽ sử dụng wscat. Để kết nối, tôi thực hiện lệnh này
wscat -c <websocket endpoint>
{"action":"addTodo","data":"hello world"}
Lưu ý rằng thuộc actiontính rất quan trọng ở đây, nó cho phép API Gateway định tuyến thông báo đến một trình xử lý lambda thích hợp.
Cơ sở hạ tầng đã sẵn sàng! Hoặc ít nhất là phần WebSockets :) Sẽ cần một số tài nguyên bổ sung (như bảng DynamoDB để lưu trữ các việc cần làm và một điểm cuối REST để tìm nạp chúng). Phần giao diện người dùng sẽ được triển khai trong React. Tôi cũng sẽ sử dụng RxJS Observables để quản lý mát-xa từ các kết nối WebSocket. Cảm ơn vì đã đọc và hãy theo dõi phần tiếp theo!
Khi bạn gửi yêu cầu tới facebook.com, máy tính của bạn sẽ tra cứu tên miền để dịch tên miền đó thành địa chỉ IP để máy tính của bạn có thể thực hiện kết nối đó.
Bắt tay vào một hành trình đổi mới và thành công ly kỳ khi bạn khai thác tiềm năng chưa được khai thác của các nền tảng không mã đáng ngạc nhiên này. Để tôi chia sẻ với bạn một câu chuyện về Sapna, một nữ doanh nhân xuất sắc.
Đã bao nhiêu lần bạn vứt bỏ chai nhựa, lọ thủy tinh, lon nhôm hay gói năng lượng xanh mà không cần suy nghĩ kỹ? Đã bao nhiêu lần bạn ước mình có thể nhận được thứ gì đó để đổi lại việc tái chế chúng? Nếu bạn giống như hầu hết mọi người, câu trả lời có lẽ là nhiều lần. Tái chế thường được coi là một rắc rối, một công việc vặt hoặc một nhiệm vụ không mang lại bất kỳ lợi ích tức thời hoặc hữu hình nào.
Hôm qua, chúng ta đã khép lại cuộc thi Ca khúc Eurovision năm nay bằng một đêm chung kết hoành tráng, hỗn loạn, nơi ca sĩ người Thụy Điển Loreen đã mang về chiếc cúp, trở thành người phụ nữ đầu tiên giành chiến thắng hai lần và mang vương miện về cho Thụy Điển 50 năm sau khi ABBA giành chiến thắng trong cuộc thi với “Waterloo”. Họ tiếp tục trở thành một trong những nghệ sĩ lớn nhất trong thể loại nhạc pop.
Đó là một buổi sáng vàng rực rỡ trên những ngọn đồi thoai thoải ở phía tây, khi những tia nắng đầu tiên chiếu sáng ngọn cỏ phủ sương trên đồng bằng. Một đàn gia súc Angus điềm đạm, đen tuyền và to lớn, in bóng dưới ánh bình minh khi chúng đi xuống con đường mòn bị đánh đập đến một địa phương mà tất cả chúng đều biết rõ; quán ăn sáng.
“Anh ấy sẽ bảo vệ tôi khi tôi gặp nguy hiểm. Anh ấy sẽ giấu tôi trong lều của anh ấy.