2. The Teleport Protocol¶
The Teleport Protocol is a network protocol for client-server immersive applications. Essentially this means that applications can be used remotely without downloading or installing them. The protocol is open, meaning that anyone can use it, either by writing a client program or by developing a server that uses the protocol.
Teleport is a top-level application-layer protocol. It uses three transport layers in parallel: a WebSocket connection for signaling, a media/data transport (WebRTC by default, with optional SRT/EFP support) for real-time streams, and an HTTP(S) service for static asset retrieval.
Teleport XR |
Real-time client-server interface of a virtual world. |
WebSocket / WebRTC / HTTP(S) |
Signaling, real-time data channels, and static asset transfer. |
TCP / UDP / TLS / DTLS-SRTP / SCTP |
Standard transports underlying the above. |
Network, Data Link, Physical Layer |
Standard network layers |
Teleport XR Ltd provides reference implementations of both client and server. The protocol and software should be considered pre-alpha, suitable for testing, evaluation and experimentation.
Here is the code:
URL |
Contents |
|---|---|
Native C++ Client app for Windows, Linux and Quest, Native C++ server library for Unreal and Unity-based servers. |
|
Lightweight nodejs server library. Use npm install teleportxr. |
|
https://github.com/teleportxr/teleport-nodejs-server-example |
Lightweight nodejs server example: uses the teleportxr npm package. |
Web client suitable for embedding (pre-alpha) |
The protocol uses three concurrent connections between a client and server:
The Signaling connection is established first; the Server then sends a Setup Command which contains the parameters needed by the Client to attach to the Data Service and the HTTP service.
The data source may be the same server, or it may be one or more other sources.
Contents:
- 2.1. Conventions
- 2.2. Connection State Machine
- 2.3. Signaling
- 2.4. Data Service
- 2.5. Data Transfer
- 2.6. HTTP Service
- 2.7. Video
- 2.8. Video Metadata
- 2.9. Geometry Payload
- 2.9.1. Channel framing
- 2.9.2. Payload types
- 2.9.3. Node payload
- 2.9.4. Mesh payload
- 2.9.5. Material payload
- 2.9.6. MaterialInstance payload
- 2.9.7. Texture payload
- 2.9.8. Animation payload
- 2.9.9. Skeleton payload
- 2.9.10. FontAtlas payload
- 2.9.11. TextCanvas payload
- 2.9.12. TexturePointer payload
- 2.9.13. MeshPointer payload
- 2.9.14. MaterialPointer payload
- 2.9.15. RemoveNodes payload
- 2.9.16. Resource lifecycle
- 2.9.17. Axis conversion
- 2.9.18. Coding conventions
- 2.10. Audio
- 2.11. Input