Artico is a flexible set of libraries that help create your own WebRTC-based solutions.
It uses a RTCPeerConnection
abstraction similar to simple-peer, in order to maintain each individual peer-to-peer connection, while providing integrated signaling (via Socket.io), all via simple APIs.
Warning This is a work-in-progress. Feel free to leave feature suggestions, submit PRs or create issues you may find.
WebRTC as a technology has grown significantly in the past few years, making it more and more appealing. However, WebRTC APIs are not always straightforward and easy to use. In addition, WebRTC specifications don't define a signaling protocol or a discovery mechanism.
Multiple projects, like PeerJS and simple-peer, attempt to abstract some of the WebRTC complexities away from the user, facilitating the use of the technology. Even though these are all great projects, they usually fall short on some needed features (i.e., simple-peer doesn't provide signaling, PeerJS provides signaling but misses renegotiation capabilities).
Artico aims at being a flexible, yet powerful, set of abstraction tools that should accomodate most WebRTC project needs.
Artico provides three core packages:
- @rtco/peer -
RTCPeerConnection
abstraction, heavily inspired by simple-peer - @rtco/client - client library, which includes @rtco/peer + signalling, providing an all-in-one client solution
- @rtco/server - signaling server library
A couple of apps are also provided as examples:
- artico-example-client - Next.js application using @rtco/client
- artico-example-server - Node.js server that uses @rtco/server
The example apps are used to support the development of the Artico ecosystem, whilst demonstrating how to use the library packages.
- provide WebRTC API abstraction
- facilitate individual peer to peer connections
- heavily inspired by simple-peer
- integrated signaling out of the box
- dynamic number of streams in single connection (via @rtco/peer)
- facilitate different peer network topologies (e.g., manual P2P, mesh, scalable broadcast tree) - TBD
- multi-platform support (i.e., browser, React Native, Node.js)
- easy to use signaling server
- integration with existing Node.js servers
- provide all the needed support for @rtco/client
Please refer to the each package/app directory for usage information.
- PeerJS - This project was inspired by PeerJS and aims at being as simple as PeerJS, while covering more complex scenarios.
- simple-peer - @rtco/peer is heavily inspired by simple-peer and maintains similar goals.
- Socket.io - Used as the connection protocol between peers and the signaling server.
- RTCMultiConnection - Artico aims at providing advanced features found in this great project.