All Projects → RainwayApp → Spitfire

RainwayApp / Spitfire

Licence: apache-2.0
An easy to use WebRTC Datachannels library for .NET applications.

Projects that are alternatives of or similar to Spitfire

P
Peer-to-peer networking with browsers
Stars: ✭ 400 (+143.9%)
Mutual labels:  networking, webrtc, p2p
udpeer
A simple UDP peer to peer networking proxy using webrtc
Stars: ✭ 19 (-88.41%)
Mutual labels:  udp, webrtc, p2p
Quic
A Go implementation of the QUIC API for Peer-to-peer and Client-to-Server Connections
Stars: ✭ 137 (-16.46%)
Mutual labels:  networking, webrtc
Stun
A Go implementation of STUN
Stars: ✭ 141 (-14.02%)
Mutual labels:  networking, webrtc
Webrtc Qr
WebRTC Connect Experiment - https://aquigorka.com/webrtc-qr/
Stars: ✭ 154 (-6.1%)
Mutual labels:  webrtc, p2p
Hublin
DEPRECATED - An easy and free video conference service based on WebRTC
Stars: ✭ 1,614 (+884.15%)
Mutual labels:  webrtc, p2p
Ruffles
Lightweight and fully managed reliable UDP library.
Stars: ✭ 131 (-20.12%)
Mutual labels:  networking, udp
Meshenger Android
P2P Audio/Video calls over local networks. No server or Internet access needed.
Stars: ✭ 152 (-7.32%)
Mutual labels:  webrtc, p2p
Popol
Minimal non-blocking I/O for Rust
Stars: ✭ 118 (-28.05%)
Mutual labels:  networking, p2p
Ignorance
Ignorance utilizes the power of ENet to provide a reliable UDP networking transport for Mirror Networking.
Stars: ✭ 158 (-3.66%)
Mutual labels:  networking, udp
P2p Cdn Sdk Javascript
Free p2p cdn github javascript sdk to reduce video streaming costs of live and on demand video using webrtc by upto 90% and improve scalability by 6x - 🚀 Vadootv 🚀
Stars: ✭ 158 (-3.66%)
Mutual labels:  webrtc, p2p
Py Ipv8
Python implementation of the IPv8 layer
Stars: ✭ 157 (-4.27%)
Mutual labels:  networking, p2p
Wave Share
Serverless, peer-to-peer, local file sharing through sound
Stars: ✭ 1,641 (+900.61%)
Mutual labels:  webrtc, p2p
Roll Call
📞 Free and reliable audio calls for everyone w/ browser p2p.
Stars: ✭ 1,563 (+853.05%)
Mutual labels:  webrtc, p2p
Metastream
Watch streaming media with friends.
Stars: ✭ 1,926 (+1074.39%)
Mutual labels:  webrtc, p2p
Rtp
A Go implementation of RTP
Stars: ✭ 120 (-26.83%)
Mutual labels:  networking, webrtc
Wt Tracker
High-performance WebTorrent tracker
Stars: ✭ 144 (-12.2%)
Mutual labels:  webrtc, p2p
Pikachu Volleyball P2p Online
Pikachu Volleyball peer-to-peer online via WebRTC data channels
Stars: ✭ 160 (-2.44%)
Mutual labels:  webrtc, p2p
Ice
A Go implementation of ICE
Stars: ✭ 114 (-30.49%)
Mutual labels:  networking, webrtc
P2p
P2P Cloud project allows users to build their private networks.
Stars: ✭ 116 (-29.27%)
Mutual labels:  networking, p2p

Spitfire

Installing

For projects targeting x64

Install-Package Spitfirex64

For projects targeting x86

Install-Package Spitfirex86

To install the utilities

Install-Package SpitfireUtils

What is this?

Spitfire is a wrapper around the WebRTC native code that allows .NET applications to take advantage of data channels. The goal of this is to allow people to build awesome P2P applications and to make it easier to use WebRTC in a server-like fashion.

What is a data channel?

A WebRTC data channel lets you send text or binary data over an active connection to a peer. In the context of a game, this lets players send data to each other, whether text chat or game status information. Data channels come in two flavors.

Reliable channels guarantee that messages you send arrive at the other peer and in the same order in which they're sent. This is analogous to a TCP socket.

Unreliable channels make no such guarantees; messages aren't guaranteed to arrive in any particular order and, in fact, aren't guaranteed to arrive at all. This is analogous to a UDP socket.

For a quick reminder on the differences between UDP and TCP, look here

What about audio/video?

This library does not currently support audio and video, however if there is enough demand we may consider adding it. To ensure this code runs in all environments we implement fake audio/video devices during initialization.

Size limitations

Data channels only support sending tiny fragments of data, while it is possible to send complete files through it, they must first be chunked. We provide some functions that will allow you to do this quickly without unnecessary copying in DataChannelUtils. It is recommended you chunk all messages larger than 10KB to avoid hitting the 16 KB limit.

Signaling

Signaling is the process of coordinating communication. In order for a WebRTC application to set up a data channel, its clients need to exchange information. Spitfire does not currently provide a signaling server, however this isn't a complex process and you can find more information on it here.

Messaging

If you're looking to maximize speed for your application, we recommend pairing Spitfire with Sachiel, our fast network messaging framework.

Contributing & Building

If you wish to contribute documentation, code examples or fixes we are more than happy to accept pull request.

To build the C++, you can find the precompiled WebRTC libraries on the release page here. Building WebRTC itself can be quite the headache so we provide scripts for that as well located here.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].