# jsfiddle/togetherjs

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/jsfiddle-togetherjs).**

7,006 stars · 839 forks · JavaScript · MPL-2.0

## Links

- GitHub: https://github.com/jsfiddle/togetherjs
- Homepage: https://togetherjs.com
- awesome-repositories: https://awesome-repositories.com/repository/jsfiddle-togetherjs.md

## Description

Togetherjs is a real-time collaboration framework designed to synchronize application state, cursors, and navigation across multiple user sessions. It provides a synchronization tool for shared browsing and a signaling server to facilitate peer-to-peer communication.

The project integrates audio chat and media streaming via peer-to-peer technology, allowing collaborators to engage in live voice communication. It includes a presence and identity manager to map session participants to custom profiles, names, and avatars.

The framework covers a broad surface of collaborative capabilities, including user presence tracking, shared navigation following, and the generation of unique collaboration links. It manages state synchronization through the broadcasting of data to keep UI elements consistent and tracks user interactions by displaying remote mouse cursors and click events.

## Tags

### Web Development

- [Real-Time Collaboration Tools](https://awesome-repositories.com/f/web-development/real-time-collaboration-tools.md) — Provides a framework for real-time collaborative browsing, allowing users to navigate websites and sync cursors together.
- [Co-browsing Tools](https://awesome-repositories.com/f/web-development/co-browsing-tools.md) — Synchronizes the current URL and page content across different clients to enable joint real-time navigation.
- [Presence Tracking](https://awesome-repositories.com/f/web-development/presence-tracking.md) — Tracks and displays real-time user activity on a page, mapping participants to specific profiles and avatars.
- [Shared Browsing Synchronization](https://awesome-repositories.com/f/web-development/shared-browsing-synchronization.md) — Synchronizes the current page across multiple clients so users can browse the same domain together in real time. ([source](https://togetherjs.com/))
- [Collaboration Link Generators](https://awesome-repositories.com/f/web-development/collaboration-link-generators.md) — Provides the ability to generate unique shareable URLs for users to join a specific real-time collaboration session. ([source](https://togetherjs.com/docs/))
- [Real-Time DOM Updates](https://awesome-repositories.com/f/web-development/server-side-rendering/real-time-dom-updates.md) — Updates the state of a website across all connected clients simultaneously using real-time DOM updates. ([source](https://togetherjs.com/))
- [Collaboration Room Routing](https://awesome-repositories.com/f/web-development/url-routing/collaboration-room-routing.md) — Uses unique identifiers in the web address to group users into isolated real-time collaboration rooms.

### Data & Databases

- [Application State Synchronizations](https://awesome-repositories.com/f/data-databases/application-state-synchronizations.md) — Keeps UI elements and data consistent across different user clients by broadcasting state changes via JSON messages.

### Networking & Communication

- [WebSocket Clients and Servers](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-computing/communication-protocols/websocket-implementations/websocket-clients-and-servers.md) — Implements a WebSocket-based message bus to transport real-time state updates and user events between clients and the server.
- [Signaling Servers](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/signaling-servers.md) — Provides a signaling server to coordinate the initial handshakes required for participants to establish peer-to-peer connections.
- [State Broadcasting Systems](https://awesome-repositories.com/f/networking-communication/state-broadcasting-systems.md) — Broadcasts JSON messages to all session participants to keep UI elements and data consistent across different clients. ([source](https://togetherjs.com/docs/))
- [Real-time Messaging](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/communication-platforms/real-time-collaboration-suites/real-time-messaging.md) — Enables multi-modal communication by combining instant text messaging and voice chat audio during collaboration. ([source](https://togetherjs.com/))
- [Peer-to-Peer Media Libraries](https://awesome-repositories.com/f/networking-communication/peer-to-peer-tunneling/peer-to-peer-media-libraries.md) — Establishes direct audio and data channels between browsers using WebRTC to reduce server latency.
- [Voice Chat Integrations](https://awesome-repositories.com/f/networking-communication/peer-to-peer-tunneling/peer-to-peer-media-libraries/voice-chat-integrations.md) — Integrates real-time peer-to-peer audio chat directly into the web application for collaborator communication.
- [P2P Voice Chat](https://awesome-repositories.com/f/networking-communication/real-time-audio-capture-protocols/p2p-voice-chat.md) — Establishes real-time peer-to-peer voice connections for direct audio interaction between collaborators. ([source](https://togetherjs.com/docs/))
- [WebRTC Streaming](https://awesome-repositories.com/f/networking-communication/webrtc-streaming.md) — Integrates a WebRTC-based system for real-time voice chat and media streaming between collaborators.

### Security & Cryptography

- [Collaborative Identity Mapping](https://awesome-repositories.com/f/security-cryptography/user-identity-management/collaborative-identity-mapping.md) — Links session participants to application profiles by assigning custom names, avatars, and colors. ([source](https://togetherjs.com/docs/))

### Software Engineering & Architecture

- [JSON State Synchronization](https://awesome-repositories.com/f/software-engineering-architecture/json-state-synchronization.md) — Uses JSON payloads to broadcast serialized data objects, keeping UI elements and application state consistent across all clients.

### User Interface & Experience

- [Collaborative Interaction Sync](https://awesome-repositories.com/f/user-interface-experience/collaborative-interaction-sync.md) — Shares cursors and edits in real-time so multiple users can interact on the same page together simultaneously. ([source](https://cdn.jsdelivr.net/gh/jsfiddle/togetherjs@develop/README.md))
- [Collaborative Room Presence Tracking](https://awesome-repositories.com/f/user-interface-experience/collaborative-room-presence-tracking.md) — Tracks and displays a real-time list of active users within a specific multiplayer collaboration session. ([source](https://togetherjs.com/))
- [Interactive Element Synchronization](https://awesome-repositories.com/f/user-interface-experience/dynamic-element-tracking/dom-element-re-scanning/interactive-element-synchronization.md) — Implements DOM-element mapping to synchronize cursors and edits across different user browsers in real time.
- [Presence and Identity Managers](https://awesome-repositories.com/f/user-interface-experience/presence-and-identity-managers.md) — Implements a system for tracking active users and mapping session participants to custom avatars and profiles.
- [DOM Synchronization](https://awesome-repositories.com/f/user-interface-experience/dynamic-ui-querying/dynamic-ui-synchronizers/dom-synchronization.md) — Refreshes the synchronization process to identify and update elements added to the page after the initial load. ([source](https://togetherjs.com/docs/))
- [Remote Cursor Tracking](https://awesome-repositories.com/f/user-interface-experience/interaction-tracking/remote-cursor-tracking.md) — Displays remote mouse cursors and click events to show where other users are focusing on a page. ([source](https://togetherjs.com/))
