Вопрос или проблема
Я создаю клон Trello, то есть веб-приложение для управления проектами, и хотел бы добавить функциональность совместной работы, чтобы пользователь мог пригласить другого пользователя, и они могли работать над одной “доской” (как это делают на Trello). Я ищу библиотеку JavaScript, которая позволит пользователям сотрудничать через приглашения.
Какие существуют альтернативы TogetherJS или библиотеки JavaScript, позволяющие пользователю сотрудничать?
Я не совсем знаком с TogetherJS, но вижу, что он использует веб-сокеты для связи между клиентами. Вы можете использовать Socket.IO для управления собственными веб-сокетами. Приглашение, вероятно, будет работать с базой данных, так что пользователи смогут получать их, не находясь в приложении. Как только пользователь откроет общий документ/рабочую область, вы можете добавить его сокет в комнату и передавать все его действия всем другим сокетам в комнате.
Я ни одну из них не пробовал, но нахожусь в поиске чего-то похожего.
Вам стоит обратить внимание на Operation Transformation (также см. https://operational-transformation.github.io/), что даст представление о сложностях, связанных с реализацией библиотеки, которую вы можете решить использовать.
Вот хороший обзор https://geovation.github.io/canvas-shared-editor#:~:text=requiring%20additional%20effort). -, ShareDB, постоянная база данных без запросов.
Обратите внимание на обе рекомендации – Firepad (связан с сервисами Google, может не всем понравиться) и ShareDB (похоже, работает немного как TogetherJS, использует лицензию MIT).
Последняя ориентирована на json-документы, что может не подойти для всех случаев использования.
Вам также стоит посмотреть на https://github.com/yjs
.
Ответ или решение
Если вы разрабатываете веб-приложение для управления проектами, аналогичное Trello, и хотите внедрить функциональность совместной работы, важно выбрать подходящую библиотеку JavaScript для реализации этой задачи. Здесь я представлю вам несколько альтернатив TogetherJS и другие решения, которые могут помочь вам в создании функционала сотрудничества пользователей.
1. Socket.IO
Socket.IO является отличным выбором для создания веб-приложений с функциями реального времени. Эта библиотека обеспечивает двустороннюю связь между клиентом и сервером, позволяя пользователям взаимодействовать в реальном времени. Для вашей задачи вы можете реализовать систему приглашений, где пользователи смогут делиться своей доской. С использованием Socket.IO можно создать комнаты, в которые пользователи будут добавляться, чтобы синхронизировать свои действия, в том числе перемещение карточек и обновление статусов.
Преимущества:
- Легкость интеграции.
- Широкая поддержка и документация.
- Простота обработки событий.
2. ShareDB
ShareDB — это библиотека для работы с документами JSON, которая позволяет вам создавать совместные приложения. Она использует Operational Transformation (OT), что позволяет нескольким пользователям редактировать данные одновременно, сохраняя целостность информации. ShareDB также поддерживает работу с различными базами данных, включая MongoDB.
Преимущества:
- Реализация OT для синхронизации изменений в реальном времени.
- Поддержка нескольких типов баз данных.
- MIT лицензия, что делает её удобной для использования в коммерческих проектах.
3. Firepad
Firepad — это ещё одна библиотека, интегрированная с Firebase, что позволяет легко создать совместный редактор. Она предоставляет возможность работы с текстом в реальном времени и является хорошим выбором, если вы уже используете Google/Firebase для хранения данных.
Преимущества:
- Легкость в установке и настройке.
- Возможность интеграции с другими сервисами Google.
- Отлаженные механизмы аутентификации и менеджмента пользователей.
4. Yjs
Yjs — это библиотеcca для создания совместных приложений, предлагающая поддержку многопользовательской работы с использованием CRDT (Conflict-free Replicated Data Types). Эта библиотека хорошо подходит для создания приложений, где данные будут изменяться и синхронизироваться одновременно несколькими пользователями.
Преимущества:
- Высокая производительность и масштабируемость.
- Поддержка различных протоколов для синхронизации.
- Широкая поддержка различного уровня сложности приложений.
Заключение
При выборе библиотеки для реализации функционала совместной работы в вашем приложении, важно учитывать ваши конкретные потребности и масштабы проекта. Socket.IO отлично подходит для создания простых приложений с минимальными требованиями, в то время как ShareDB и Yjs обеспечивают более сложные решения для реального времени с поддержкой атомарных изменений. Firepad может быть хорошей опцией, если вы предпочитаете использовать Firebase для хранения данных.
Перед окончательным выбором рекомендуется протестировать несколько решений, чтобы определить, какое из них лучше всего соответствует вашим ожиданиям и требованиям вашего проекта.