2015-03-24 2 views
1

Je souhaiterais disposer d'un éditeur de texte enrichi collaboratif en temps réel pour ma webapp. Jusqu'à présent, j'ai fait beaucoup de recherches et je suis vraiment un peu frustré qu'il n'y ait rien d'approprié. Le truc, c'est que chaque solution là-bas est étroitement liée à un éditeur (Firepad par exemple utilise CodeMirror/Etherpad utilise Etherpad). Il n'y a que deux autres solutions: je trouve intéressantÉdition de texte enrichi collaboratif en temps réel

  • ShareJs -> ne fonctionne que pour le texte brut

  • Webstrate -> Cela m'a été le plus prometteur. Il peut gérer la synchronisation DOM et donc il peut gérer tous les contenteditable - super!

Mais le problème avec Webstrate, c'est qu'il est dans une version alpha. Donc, pour moi, c'était trop bogué - ne fonctionnait pas. J'ai essayé de le faire fonctionner pendant environ 2 jours. La synchronisation du texte était facile. Mais cela n'a pas fonctionné avec les iframes ou d'autres choses.

Mes demandes sont assez élevés pour une RTE collaboration - il devrait soutenir:

  • Images

  • Iframe

  • Vidéo

  • texte (bien sûr)

Alors que je suis à la recherche d'environ 3-4 jours maintenant pour une solution - peut-être quelqu'un d'entre vous a un indice? Serait très doux;)

+1

Je suis désolé que ce ne soit pas utile pour vous. Mais qu'en est-il de la vérification de [Google Wave] (https://code.google.com/p/wave-protocol/source/browse/) le repo? AFAIR Google Wave a soutenu de tels usages riches. –

+0

Merci pour votre commentaire;) Je pense que Google Wave fait maintenant partie de la famille Apache. Et jusqu'à présent, ils n'ont pas réussi à sortir une version stable - seulement des versions nocturnes (pas si prometteuses). Mais je vous recommande à tous de vérifier Webstrates. Cela fonctionne incroyable et si nous travaillons ensemble, nous pouvons l'améliorer. Mon problème était par exemple avec Google Maps - qui ne pouvait pas être synchronisé. Mais j'ai implémenté une option pour que certaines divs ne soient pas synchronisées et soient restituées par les clients -> fonctionne comme du charme. –

+1

Je suis désolé. Je pensais que vous voulez mettre en œuvre un tel éditeur et trouver des projets pour faire un benchmarking. (Je l'ai fait il y a longtemps) Eh bien, pour l'utilisation en production ... si vous n'avez pas trouvé celui qui vous convient le mieux, je pense qu'il est préférable de contribuer à un projet stable supportant le plug-in pour que vous ajoutiez pour améliorer le travail d'alpha d'autres personnes (c'est excitant mais ça prend tellement de temps). Est-ce que Etherpad ne supporte pas le concept du plugin? –

Répondre

3

Vous pouvez http://swellrt.org, est un cadre complet pour développer des applications de collaboration en temps réel, y compris texte riche support et un éditeur pour le Web.

Il fournit une API JS, analogue à l'API GD Real-time, ainsi que l'édition de texte enrichi.

L'éditeur peut être étendu pour prendre en charge toutes les pièces jointes.

C'est un fork de Apache Wave qui généralise le code original.

3

La chose la plus proche que j'ai trouvé est http://quilljs.com/ - il a une API pour obtenir et mettre à jour des deltas de texte et aussi pour obtenir et mettre en place plusieurs curseurs étiquetés. Il ne gère pas l'édition en temps réel pour vous, mais il vous donne assez de travailler avec (plus que tout autre projet que j'ai trouvé). Toutefois, il n'est pas aussi complet que les autres éditeurs en matière de formatage (par exemple, il ne prend pas en charge les tables et les listes imbriquées). Il est quelque peu extensible, vous pouvez donc ajouter du support pour des éléments HTML supplémentaires.

1

Les éditeurs de texte enrichi collaboratif robustes sont encore un peu en avance. La plupart des éditeurs de texte Web appartiennent à deux catégories.

  1. Ceux qui sont compatibles avec la collaboration en temps réel mais qui ont des fonctionnalités assez limitées (par exemple, pas de tables, pas d'éléments imbriqués, etc.).
  2. Ceux qui sont des éditeurs de texte enrichi basés sur le Web très robustes, mais qui n'ont pas cette API pour s'intégrer aux technologies en temps réel.

Ensuite, il y a les moteurs de collaboration comme ShareDB, API Google Drive en temps réel, SwellRT et Convergence (divulgation complète, je suis l'un des fondateurs à Convergence Labs). Ces types de systèmes ont chacun leur propre opinion sur les modèles de données et sur la manière de négocier la collaboration. Il se peut que la manière dont votre éditeur de texte enrichi fonctionne en interne soit incompatible avec l'API du moteur de collaboration. Les technologies qui synchronisent simplement le DOM sont intéressantes car elles sont souvent portables sur plusieurs éditeurs et dépendent moins de l'API de l'éditeur, mais elles manquent souvent des capacités d'édition en temps réel requises pour une bonne utilisation. collaboration (curseurs partagés, sélections partagées, etc.). Cela peut être très difficile à implémenter en plus d'une approche de synchronisation DOM de l'extérieur du moteur lui-même. Malheureusement, sans ces fonctionnalités, l'expérience d'édition collaborative n'est pas géniale.

Il existe plusieurs projets qui tentent de remédier à cette situation. Les gens de CKEditor travaillent sur CKEditor 5 qui a en tête la collaboration. De plus, chez Convergence, nous essayons de travailler avec les auteurs de nombreux éditeurs populaires pour permettre une collaboration en temps réel.

La réalité est que c'est encore un nouvel espace et évolue rapidement. Il n'y a pas de solution testée, échelonnable, slam dunk qui fournit et prête à l'emploi un éditeur collaboratif, libre, open source et entièrement capable. La situation semble s'améliorer en 2018. Espérons que dans les 12 à 24 prochains mois, cela deviendra un problème beaucoup plus facile.