2012-07-21 32 views
10

Meteor.js có hỗ trợ chuyển đổi hoạt động chưa?

Tôi đang nghiên cứu một dự án liên quan đến Etherpad mà tôi đã nghĩ đến việc sử dụng Meteor.js (mà tôi nghĩ rất phù hợp với loại dự án này). Chuyển đổi hoạt động là rất quan trọng đối với dự án của tôi nếu tôi nghĩ rằng làm cho nó khả năng mở rộng. Kiến thức hiện tại của tôi cho thấy rằng sao băng không hỗ trợ chuyển đổi hoạt động ra khỏi hộp (đúng tôi nếu tôi sai ở đây). Vì vậy, về cơ bản câu hỏi của tôi là làm thế nào để thực hiện chuyển đổi hoạt động trong meteor.js?Chuyển đổi hoạt động trong Meteor.js?

Tôi đã thử sử dụng thư viện này google-diff-match-patch, bởi Neil Fraser, nhưng gặp sự cố khi áp dụng các bản vá (mặc dù nó hoạt động bên ngoài meteor.js khá dễ dàng).

Vì vậy, có đề xuất nào không?

+0

Nicely viết câu hỏi. –

Trả lời

1

Trình chỉnh sửa văn bản hợp tác trong trình duyệt có hai thành phần chính: vùng văn bản, phải hoạt động tốt trong việc phối hợp nhập của người dùng với các chỉnh sửa khác nhận được từ máy chủ; và mô hình dữ liệu để gửi, nhận và kết hợp các chỉnh sửa này.

Meteor ngày nay không cung cấp trợ giúp đặc biệt cho một trong những điều này một cách cụ thể, nhưng nó cung cấp truyền dữ liệu theo thời gian thực và cách di chuyển dữ liệu tự động giữa máy khách và máy chủ.

Nếu tôi triển khai EtherPad trên Meteor, tôi đã luôn tưởng tượng rằng tôi sẽ sử dụng một bộ sưu tập làm "nhật ký hoạt động". Các thay đổi của người dùng sẽ được gửi đến máy chủ, nơi họ sẽ được nối vào nhật ký hoạt động chính thức (về cơ bản là khác) sẽ tự động truyền tới tất cả các máy khách. Các khách hàng sẽ có công việc áp dụng diffs mà đến và hòa giải chúng với gõ mà chưa được công nhận bởi các máy chủ nào được nêu ra.

Đó là một thách thức thực hiện khó khăn. Chúc may mắn!

+0

Firepad đã đạt được điều này qua các bộ sưu tập Firebase, tương tự về tinh thần. –

4

Sau khi xem một số dự án Meteor sử dụng OT (tức là http://cocodojo.meteor.com/), tôi quyết định đi tích hợp thích hợp.

Tôi đã tạo một gói thông minh để tích hợp ShareJS vào thiên thạch. Hãy đến kiểm tra xem nó ra và thêm yêu cầu kéo của bạn: https://github.com/mizzao/meteor-sharejs

Demo App: http://documents.meteor.com

+0

Tôi có thể hoàn tác tác vụ của các cộng tác viên khác trong ví dụ của bạn. Dường như không đúng – imkost

Các vấn đề liên quan