Bí quyết công nghệ của EzyPlatform - Socket realtime
Back To BlogsSocket là một thành phần của EzyPlatform
Như đã nói trong bài mô hình triển khai EzyPlatform trên một máy chủ, Socket là một trong 3 thành phần chính của EzyPlatform. Tuy nhiên không phải dự án nào cũng cần thiết phải có socket, chính vì vậy bạn có thể không bật socket lên và bạn có thể disable nó đi để tránh in spam log ở console của admin.

Khi bạn bật socket thì giao diện admin sẽ tự động kết nối. Khi bạn truy cập vào dashboard, một kết nối tự động được mở và lấy các thông số của socket server thông qua giao thức websocket.

Kiến trúc phần mềm của socket trong EzyPlatform
Kiến trúc này vẫn tuân theo những gì mà EzyFox Server đã thiết kế. Tuy nhiên EzyPlatform đã khởi tạo sẵn một số zone bao gồm:

- admin: Zone này chỉ phục vụ cho admin.
- chat: Zone này phục vụ cho các các plugin, theme chat.
- game: Zone này phục vụ cho các plugin, theme trò chơi.
- user: Zone này phục vụ cho người dùng nói chung.
Ngoài ra bạn cũng có thể tự tạo zone cho mình nếu muốn, tuy nhiên chúng tôi khuyến khích bạn tái sử dụng các zone đã được tạo sẵn để tránh sinh ra quá nhiều zone không cần thiết.
Người dùng được xác thực thế nào?
Người dùng bao gồm cả admin và user sẽ được xác thực thông qua các lớp UserLoginController của các plugin trước và sau đó bị chốt chặn bởi một lớp mặc định có tên SocketLoginController
.

Thông qua các bước login người dùng sẽ được nhận dạng là admin hay là user hay là không biết danh tính, khi bạn xử lý yêu cầu của người dùng ở app hoặc plugin bạn có thể truy cập thông tin dữ liệu người dùng thông qua hàm user.getProperty(SocketUserData.class)
.
Dữ liệu được xử lý thế nào
Một trong những điểm cực kỳ mạnh của EzyPlatform cũng chính là của EzyFox Server đó là việc nó hỗ trợ nhiều giao thức, tuy nhiên tất cả các dữ liệu từ các giao thực này sẽ được đưa về các lớp xử lý chung.

Dữ liệu đến từ các nguồn sẽ được chuyển đổi thành EzyData
(EzyObject
, EzyArray
) bản chất là dạng dữ liệu kiểu đối tượng hay mảng. Sau đó sẽ được đưa vào hàng đợi để xử lý.
Ở phía các handler
cũng có thêm tầng abstract
để chuyển đổi dữ liệu từ EzyData
sang dạng đối tượng Java thông thường.
Tổng kết
Socket realtime sẽ mang lại sức sống mới cho các phần mềm, tuy nhiên về mặt kỹ thuật thì nó tương đối phức tạp. May mắn là EzyPlatform đã cố gắng đóng gói sự phức tạp đó để lộ ra những thứ dễ dàng cho các nhà phát triển. Trong bài viết này chỉ là một phần siêu nhỏ của socket trong EzyPlatform, mình sẽ giới thiệu với các bạn nhiều hơn ở các bài tiếp theo nhé.