Tích hợp lưu trữ
Tích hợp lưu trữ qua WOPI
Giao thức WOPI giữa kho tệp và máy chủ soạn thảo O3O, ba địa chỉ phải đúng, và cách chọn giữa Nextcloud, WOPI host tự viết hay lớp nhúng.
Trong trang này
O3O Office Online không giữ tệp của bạn. Tệp nằm ở hệ lưu trữ của bạn (Nextcloud, kho tài liệu nội bộ, ổ đĩa của ứng dụng web). Máy chủ soạn thảo chỉ đọc tệp khi có người mở và ghi lại khi có người lưu. Trang này giải thích giao thức mà hai bên dùng để nói chuyện với nhau, và giúp bạn chọn cách đấu phù hợp.
WOPI trong một đoạn#
WOPI (Web Application Open Platform Interface) là giao thức HTTP giữa hai vai: WOPI host là hệ giữ tệp và quyền, WOPI client là máy chủ soạn thảo. Host cấp cho mỗi lần mở một access_token gắn với một tệp và một người dùng. Máy chủ soạn thảo dùng token đó để gọi ngược về host qua ba thao tác chính: CheckFileInfo (siêu dữ liệu và quyền), GetFile (nội dung) và PutFile (ghi bản mới). Trình duyệt không bao giờ tải tệp trực tiếp từ host.
Ba địa chỉ phải đúng#
| Địa chỉ | Ai gọi, gọi tới đâu | Giá trị trên máy DEV |
|---|---|---|
| Discovery của máy chủ soạn thảo | WOPI host gọi /hosting/discovery để biết mở tệp bằng URL nào | http://o3o-online:9980 (trong mạng o3o-net) |
| URL trình soạn thảo (urlsrc) | Trình duyệt nạp trang soạn thảo trong iframe, luôn qua proxy | http://localhost:8080/browser/<hash>/cool.html? |
| WOPISrc | Máy chủ soạn thảo gọi ngược về host để đọc và ghi tệp | http://o3o-nextcloud/index.php/apps/richdocuments/wopi/files/<id> |
Hai địa chỉ đầu do máy chủ O3O quyết định qua O3O_ONLINE_SERVER_NAME và O3O_ONLINE_SSL_TERMINATION. Địa chỉ thứ ba do WOPI host quyết định và phải là địa chỉ mà container o3o-online gọi tới được, đồng thời phải được khai trong một nhóm aliasgroupN. Phần lớn lỗi khi đấu nối nằm ở địa chỉ thứ ba.
Chọn cách đấu#
| Tình huống | Nên dùng | Trạng thái trong v1 |
|---|---|---|
| Người dùng đã làm việc trên Nextcloud | Nextcloud + richdocuments | Có. Hồ sơ compose nextcloud đi kèm. |
| Nextcloud AIO hoặc Nextcloud cài sẵn ở nơi khác | Nextcloud AIO và Nextcloud cài sẵn | Có thể dùng; chưa kiểm chứng trên AIO |
| Ứng dụng web của bạn có kho tệp riêng và muốn tự kiểm soát quyền | Tự viết WOPI host | Thử nghiệm: đã chạy với image DEV |
| Chỉ cần mở một tệp theo URL rồi nhận bản đã sửa, không muốn viết WOPI | Lớp nhúng O3O.Editor | Có. Gate đóng vai WOPI host hộ bạn. |
| ownCloud, oCIS | ownCloud và oCIS | Sắp có |
Luồng mở tài liệu qua WOPI#
- WOPI host đọc
/hosting/discoverymột lần (nên nhớ đệm vài phút) để lấyurlsrctheo đuôi tệp. - Người dùng bấm mở tệp. Host kiểm quyền, sinh
access_tokenvà hạnaccess_token_ttl. - Trang của host gửi form POST vào một iframe tới
urlsrc + "WOPISrc=" + URL tệp, token nằm trong thân form. - Proxy O3O hỏi gate có còn chỗ cho phiên soạn thảo mới không (xem cách đếm kết nối).
- Máy chủ soạn thảo gọi
CheckFileInforồiGetFiletới WOPISrc và hiển thị tài liệu. - Khi tự lưu, khi người dùng bấm lưu, và khi người cuối cùng rời đi: máy chủ soạn thảo gọi
PutFile. Gate không đứng trên đường này nên không bao giờ chặn lưu.
Kiểm tra nhanh máy chủ soạn thảo#
# Địa chỉ trình soạn thảo mà trình duyệt sẽ mở (urlsrc)
curl -s http://localhost:8080/hosting/discovery | grep -o 'ext="docx" name="edit" urlsrc="[^"]*"'
# Khả năng của máy chủ soạn thảo
curl -s http://localhost:8080/hosting/capabilities
# Gate có thấy máy chủ soạn thảo không: "upstream": {"coolwsd": "ok", ...}
curl -s http://localhost:8080/o3o/status