Phụ liệu đồng bộ hóa
Các trò chuyện đám cung cấp những khả năng mới cho mọi thiết bị. Bây giờ, nó là có thể đồng bộ hóa lịch sử giữa các thiết bị bằng cách chia sẻ kho lưu trữ liên quan. thiết bị đồng bộ hóa cần phải được định nghĩa lại để theo dõi những thay đổi đó.
Nhiều kịch bản được định nghĩa trong tài liệu thiết kế Swarm, tuy nhiên, điều này không có nghĩa là đồng bộ hóa các cuộc trò chuyện giữa các thiết bị cho cùng một người dùng. Một số kịch bản mới phải được viết.
Phương pháp cũ
Các thiết bị đồng bộ đã được thực hiện thông qua DHT. Bởi vì mỗi giá trị KHÔNG CHO vượt quá 64k, các cuộc trò chuyện không được gửi trong đồng bộ thiết bị, hoặc hồ sơ thành viên, bởi vì nó quá nặng. Đây là một vấn đề và CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO CHO
Trong phương pháp cũ, daemon đang nghe trên "inbox:DEVICE_ID" cho các giá trị DeviceSync chứa danh sách liên lạc để đồng bộ hóa (xem AccountManager::startSync()
);
Ghi chú
The current DeviceSync value present on the DHT is deprecated with this draft.
Phương pháp mới
Since Jami has the ConnectionManager, using p2p socket is possible to perform sync quickly with big values (cause the socket is not limited in data).
Đây là kịch bản được sử dụng để đồng bộ hóa:
When the device (A) goes online, it announces its presence via a DeviceAnnouncement like the OldMethod.
Các thiết bị khác (!A) sẽ phát hiện thông báo đó và sẽ yêu cầu thiết bị này thông qua ConnectionManager để mở một kênh mới có tên là "sync://DEVICE_ID_A". (Lưu ý: A sẽ nhận thông báo từ các thiết bị khác, vì vậy nó sẽ yêu cầu các kênh đồng bộ hóa cũng vậy).
Ngay khi kênh này được mở, thiết bị yêu cầu kênh này sẽ gửi một giá trị DeviceSync (xem phần tiếp theo) chứa các cuộc trò chuyện và liên lạc được biết đến của nó.
A sẽ kiểm tra giá trị DeviceSync và:
Xóa các liên lạc nếu nó phát hiện các liên lạc đã bị xóa
Thêm liên lạc nếu nó phát hiện thêm liên lạc
Xóa các cuộc trò chuyện nếu nó phát hiện các cuộc trò chuyện đã bị xóa
Thêm các cuộc trò chuyện nếu nó phát hiện thêm các cuộc trò chuyện
Xóa yêu cầu của cuộc trò chuyện nếu yêu cầu được chấp nhận (nay đang trong cuộc trò chuyện) / từ chối
Thêm yêu cầu của cuộc trò chuyện nếu phát hiện
Ghi chú
If A detects new conversations, it will asks the device which announced that conversation to clone the repository through a git channel (so like described in Swarm chat design).
Truy cập thiết bị
Giá trị này là một JSON chứa:
{
"contacts": [/* Contacts (TODO) */],
"conversation": [
{ "id":"convID", "created":TIMESTAMP, "removed":OPTIONAL_TIMESTAMP },
{ "id":"convID2", "created":TIMESTAMP2, "removed":OPTIONAL_TIMESTAMP2 } /* ... */
],
"conversationsRequests": [
{ "id":"convID", "received":TIMESTAMP, "declined":OPTIONAL_TIMESTAMP,
"members":[], "metadatas:[] },
{ "id":"convID2", "received":TIMESTAMP2, "declined":OPTIONAL_TIMESTAMP2
"members":[], "metadatas:[] } /* ... */
],
}
Câu chuyện người dùng
Đồng bộ khi thêm thiết bị
Alice tạo ra một cuộc trò chuyện
Alice thêm một số tin nhắn
Alice thêm một thiết bị khác
Thiết bị khác sẽ nhận và đồng bộ hóa cuộc trò chuyện đã tạo trước đó
Đồng bộ hóa khi kết nối thiết bị
Alice tạo ra một cuộc trò chuyện
Alice thêm một số tin nhắn
Alice kết nối một thiết bị khác
Thiết bị khác sẽ nhận và đồng bộ hóa cuộc trò chuyện đã tạo trước đó
Truyền hợp giữa nhiều thiết bị
Alice có 2 thiết bị.
Alice tạo ra một cuộc trò chuyện
Thiết bị khác nên nhận và đồng bộ hóa cuộc trò chuyện được tạo trên một trong các thiết bị
Đồng bộ hóa để phát hiện các yêu cầu mới
Alice nhận được yêu cầu để trò chuyện
Alice thêm một thiết bị mới
Thiết bị khác nên lấy lại các yêu cầu từ thiết bị A
Đồng bộ hóa cho các yêu cầu được chấp nhận
Alice có 2 thiết bị.
Alice chấp nhận yêu cầu của một cuộc trò chuyện
Thiết bị khác sẽ phát hiện yêu cầu được chấp nhận
Đồng bộ hóa cho yêu cầu từ chối
Alice có 2 thiết bị.
Alice từ chối yêu cầu để nói chuyện
Thiết bị khác nên phát hiện yêu cầu từ chối
Thực hiện hiện hiện tại
gerrit#15584 thực hiện trang này