Vad är realtids-samarbetsredigering?

Realtids-samarbetsredigering gör det möjligt för flera personer att arbeta på samma dokument samtidigt, där varje persons ändringar är omedelbar synliga för alla andra. Tidiga system användes Operational Transformation (OT) — en teknik som ordnar om motstridiga redigeringar på farten — men OT kräver en central server för att godkänna varje ändring. Moderna system som Yjs använder Conflict-free Replicated Data Types (CRDTs): ett matematiskt ramverk där två repliker kan slås samman i vilken ordning som helst och alltid konvergerar till samma resultat, utan att behöva en central myndighet för att avgöra vem som "vinner".

CRDTs gör offline-redigering naturlig: användare kan fortsätta redigera även när de är frånkopplade, och deras ändringar slås samman smidigt när de återansluter. Det är därför realtids-samarbetsredigerare byggda på CRDTs känns omedelbar — redigeringar tillämpas lokalt först och synkroniseras med jämlikar efteråt, i stället för att vänta på en rundresa till en server innan de visas på skärmen.

Verktygsbeskrivning

Collaborative Code Editor är en realtids-multiplayer-kodredigerare driven av Yjs och CodeMirror 6. Dela rum-URL:en med dina lagkamrater och alla i rummet redigerar samma dokument tillsammans, med varje persons markör och markering visad i en märkt indikator.

Redigeraren stöder syntaxmarkering för dussintals programmeringsspråk, valbara via en delad språkrullgardin — att ändra språket i en webbläsare uppdaterar det för alla i rummet omedelbar. Filer kan laddas från din lokala disk med knappen Öppna fil och laddas ner igen med Spara fil.

Funktioner

  • Live multi-user-markörer: Varje samarbetspartners markör och markering visas med en färgkodad, namngiven etikett; flera markörer på samma position slås samman till en enda "N användare"-indikator för att minska visuell brus.
  • Delad språkval: Det aktiva programmeringsspråket sparas i rummet så alla deltagare alltid ser samma syntaxmarkering, och sena anslutare får omedelbar rätt tillstånd.
  • Öppna och spara filer lokalt: Ladda vilken källfil som helst från disk direkt in i den delade redigeraren, eller ladda ner det aktuella dokumentet som en fil med rätt tillägg.

Hur det fungerar

När du ansluter till ett rum skapar redigeraren ett Yjs-dokument med en delad Y.Text-nod som representerar filinnehållet. Varje tangenttryckning kodas som en kompakt binär Yjs-uppdatering, serialiseras till Base64 och sänds över en WebSocket-rum. Alla anslutna jämlikar tillämpar uppdateringen på sin egen replik; på grund av CRDT-garantin konvergerar alla repliker till samma text oavsett i vilken ordning uppdateringar anländer.

Markör- och markeringspositionen delas genom ett lättviktigt Awareness-lager som dirigerar positionsdata genom samma WebSocket-rum. Det fullständiga dokumenttillståndet är dämpat och skrivs till beständig rumlagring varje sekund, så användare som ansluter efter att sessionen startade får det aktuella dokumentet omedelbar.

Alternativ förklarade

  • Språkrullgardin — Väljer syntaxmarkeringsspråket för redigeraren. Valet sänds till alla rummedlemmar så alla ser konsekvent markering. Rullgardinen är inaktiverad tills du är ansluten till ett rum.
  • Öppna fil — Öppnar en lokal filväljare och laddar den valda filens textinnehål in i det delade Yjs-dokumentet, vilket ersätter det aktuella innehållet för alla i rummet.
  • Spara fil — Laddar ner det aktuella redigerarinnehållet som en fil. Filtillägget väljs automatiskt baserat på det valda språket.
  • Tema — Redigeraren följer dina systemets mörk-/ljusönskemål (lagrat i localStorage). Växla ditt operativsystem eller webbläsartema för att växla mellan VS Code–stil mörka och ljusa redigerareteman.

Begränsningar

  • En aktiv WebSocket-anslutning till relä-servern krävs för synkronisering; om anslutningen bryts, synkroniseras redigeringar gjorda offline automatiskt när du återansluter.
  • Det finns ingen beständig versionshistorik — när en session slutar och rummet stängs är dokumentet borta om du inte sparade det lokalt med knappen Spara fil.
  • Binära filer (bilder, kompilerade binärer, etc.) kan inte laddas; redigeraren fungerar endast med vanlig text-källfiler.
  • Det här verktyget är i betaversion; rumstabilitet och maximala samtidiga användare kan vara begränsade.

Tips

  • Dela den fullständiga rum-URL:en från din webbläsares adressfält för att bjuda in samarbetspartner — rum-ID:t är kodat i URL:en.
  • Spara en lokal kopia med Spara fil i slutet av en session; rumdata är inte garanterad att bestå på obestämd tid.
  • Om en samarbetspartners markör-etikett täcker viktig kod, vänds etiketten automatiskt till vänster när den är nära höger kant av redigeraren.