- chính Gateway, và
- các ứng dụng khách hiển thị với người dùng đang kết nối với Gateway (ứng dụng Mac, WebChat, các node, v.v.)
Các trường thông tin hiện diện (nội dung được hiển thị)
Các mục thông tin hiện diện là những đối tượng có cấu trúc với các trường như:instanceId(không bắt buộc nhưng đặc biệt khuyến nghị): danh tính ổn định của ứng dụng khách (thường làconnect.client.instanceId)host: tên máy chủ thân thiện với người dùngip: địa chỉ IP được xác định theo khả năng tốt nhấtversion: chuỗi phiên bản của ứng dụng kháchdeviceFamily/modelIdentifier: thông tin gợi ý về phần cứngmode:ui,webchat,cli,backend,node,probe,testlastInputSeconds: số giây kể từ lần nhập liệu gần nhất của người dùng, nếu biếtreason: chuỗi dạng tự do do ứng dụng khách cung cấp; chính Gateway chỉ phátself,connectvàdisconnectdeviceId,roles,scopes: danh tính thiết bị và thông tin gợi ý về vai trò/phạm vi từ quá trình bắt tay kết nốits: dấu thời gian của lần cập nhật gần nhất (ms kể từ epoch)
Nguồn tạo (thông tin hiện diện đến từ đâu)
Các mục thông tin hiện diện được tạo từ nhiều nguồn và được hợp nhất.1) Mục của chính Gateway
Gateway luôn khởi tạo một mục “self” khi bắt đầu để giao diện người dùng hiển thị máy chủ Gateway ngay cả trước khi có ứng dụng khách nào kết nối.2) Kết nối WebSocket
Mỗi ứng dụng khách WS bắt đầu bằng một yêu cầuconnect. Khi quá trình bắt tay thành công,
Gateway chèn hoặc cập nhật một mục thông tin hiện diện cho kết nối đó.
Vì sao các kết nối mặt phẳng điều khiển tạm thời không xuất hiện
Các lệnh CLI, ứng dụng khách RPC phía máy chủ và trình thăm dò thường chỉ kết nối trong thời gian ngắn. Để tránh lưu giữ sự biến động đó trong suốt TTL của thông tin hiện diện, các ứng dụng khách ở chế độcli, backend
hoặc probe không được chuyển thành mục thông tin hiện diện. Các ứng dụng khách ở chế độ kiểm thử
vẫn được theo dõi vì các bộ kiểm thử sử dụng chúng để thay thế cho ứng dụng khách thực.
3) Beacon system-event
Ứng dụng khách có thể gửi các beacon định kỳ giàu thông tin hơn qua phương thức system-event. Ứng dụng Mac
sử dụng phương thức này để báo cáo tên máy chủ, IP, phiên bản và siêu dữ liệu về trạng thái hoạt động. Hoạt động
nhập liệu vật lý không thuộc beacon chung này; sự kiện node gốc dành riêng cho mục đích được mô tả trong
Thông tin hiện diện của máy tính đang hoạt động chịu trách nhiệm về hoạt động đó. Máy Mac
gắn thẻ các beacon này bằng system-presence-clear-last-input; các Gateway hiện tại
sử dụng dấu hiệu tương thích ngược đó để xóa mọi thông tin về độ gần đây của lần nhập liệu được giữ lại từ
ứng dụng cũ hơn. Beacon cũng mang một giá trị cố định là 30 ngày để các Gateway cũ hơn
bỏ qua thẻ sẽ ghi đè độ gần đây chính xác thay vì giữ lại nó. Không có hoạt động mới nào
được lấy mẫu cho giá trị tương thích này.
4) Kết nối node (vai trò: node)
Khi một node kết nối qua WebSocket của Gateway vớirole: node, Gateway
chèn hoặc cập nhật một mục thông tin hiện diện cho node đó (cùng luồng với các ứng dụng khách WS khác).
Quy tắc hợp nhất + loại bỏ trùng lặp (vì sao instanceId quan trọng)
Các mục thông tin hiện diện được lưu trong một ánh xạ duy nhất trong bộ nhớ, với khóa không phân biệt chữ hoa chữ thường
là giá trị khả dụng đầu tiên theo thứ tự: id thiết bị đã ghép nối, connect.client.instanceId,
hoặc id riêng của kết nối như phương án cuối cùng.
Các ứng dụng khách mặt phẳng điều khiển tạm thời bị loại hoàn toàn khỏi quá trình theo dõi (xem
phần trên), vì vậy id kết nối của chúng không bao giờ trở thành khóa. Với mọi ứng dụng khách khác, việc
dùng id kết nối làm phương án dự phòng đồng nghĩa với việc một ứng dụng khách kết nối lại mà không có
instanceId ổn định sẽ xuất hiện dưới dạng một hàng trùng lặp.
TTL và giới hạn kích thước
Thông tin hiện diện được thiết kế để tồn tại tạm thời:- TTL: các mục cũ hơn 5 phút sẽ bị loại bỏ
- Số mục tối đa: 200 (mục cũ nhất bị loại bỏ trước)
Lưu ý về kết nối từ xa/đường hầm (IP loopback)
Khi một ứng dụng khách kết nối qua đường hầm SSH / chuyển tiếp cổng cục bộ, Gateway có thể thấy địa chỉ từ xa là127.0.0.1. Để tránh ghi lại địa chỉ đường hầm đó
làm IP của ứng dụng khách, quá trình xử lý kết nối sẽ bỏ qua hoàn toàn ip đối với
các ứng dụng khách được phát hiện là cục bộ (loopback), thay vì ghi địa chỉ loopback
vào mục.
Thành phần sử dụng
Trang Devices của giao diện điều khiển
Trang Devices kết hợpsystem-presence với các bản ghi ghép nối và node
bền vững. Trang này ghim beacon của chính Gateway ở đầu và sử dụng id thiết bị hoặc
id phiên bản khớp nhau cho siêu dữ liệu trực tiếp về nền tảng, phiên bản, kiểu máy và độ gần đây của lần nhập liệu.
Tab Instances trên macOS
Ứng dụng macOS hiển thị đầu ra củasystem-presence và áp dụng một chỉ báo trạng thái nhỏ
(Active/Idle/Stale) dựa trên thời gian kể từ lần cập nhật gần nhất.
Mẹo gỡ lỗi
- Để xem danh sách thô, hãy gọi
system-presencetrên Gateway. - Nếu thấy các mục trùng lặp:
- xác nhận ứng dụng khách gửi
client.instanceIdổn định trong quá trình bắt tay - xác nhận các beacon định kỳ sử dụng cùng
instanceId - kiểm tra xem mục bắt nguồn từ kết nối có thiếu
instanceIdhay không (trùng lặp là điều được dự kiến)
- xác nhận ứng dụng khách gửi
Liên quan
Thông tin hiện diện của máy tính đang hoạt động
Cách hoạt động nhập liệu vật lý trên máy Mac chọn một node đang hoạt động và định tuyến cảnh báo kết nối.
Chỉ báo đang nhập
Thời điểm các chỉ báo đang nhập được gửi và cách điều chỉnh chúng.
Truyền phát và chia khối
Truyền phát đầu ra, chia khối và định dạng theo từng kênh.
Kiến trúc Gateway
Các thành phần Gateway và giao thức WebSocket điều khiển việc cập nhật thông tin hiện diện.
Giao thức Gateway
Giao thức truyền dẫn cho
connect, system-event và system-presence.