Awesome
WebRTC Direct Connection Testing
This website tests the WebRTC connectivity to provide intuitions about the likelihood of connectivity between random participants on the Internet. It tries to establish a direct connection, which does not use a TURN relay server.
All participants get a real-time view of connections and a copy of the event log for offline analysis.
Quick Start
Open https://webrtc-connection-testing.herokuapp.com/ in as many browsers as you want to test. In each, type a pseudonym to identify each instance, then click "Connect".
To connect from the commandline, similar to using pando-computing with WebRTC, do:
git clone git@github.com:elavoie/webrtc-connection-testing
cd webrtc-connection-testing
npm install
bin/participant http://webrtc-connection-testing.herokuapp.com
If a line appears between two instances under "Current Connectivity", then a WebRTC connection was successful.
Deploy your own server:
git clone git@github.com:elavoie/webrtc-connection-testing
cd webrtc-connection-testing
npm install
npm start
Events
Here is a list of events logged by the server.
participant-connected
A participant connected over a WebSocket to the server, which assigned it a random identifier and recorded their IP address.
{
type: 'participant-connected',
id: String, // Identifier
ip: String // IP Address
}
participant-status-updated
A participant updated some personally identifiable information, such as a pseudoname, and their geographical location (if they agreed to reveal their location). This makes it easier to interpret the information in the log. Participants may update their status multiple times.
{
type: 'participant-status-update',
id: String, // Identifier
name: String, // Pseudo-name
latitude: Number,
longitude: Number
}
participant-disconnected
A participant disconnected, intentionally or not, from the server (terminating their WebSocket connection).
{
type: 'participant-disconnected',
id: String // Identifier
}
webrtc-connection-attempt
A participant tried to connect to another participant by opening a WebRTC channel.
{
type: 'webrtc-connection-attempt',
origin: String, // Identifier
destination: String, // Identifier
initiator: Boolean, // True if participant at origin initiated the WebRTC connection, false otherwise.
timestamp: Date // Timestamp as recorded by participant
}
webrtc-connection-signal
A signal emitted by a participant to inform another of how they may open a WebRTC connection.
{
type: 'webrtc-connection-signal',
origin: String, // Identifier
destination: String, // Identifier
signal: Object, // WebRTC signal
timestamp: Date // Timestamp as recorded by participant
}
webrtc-connection-opened
The connection between participants successfully opened.
{
type: 'webrtc-connection-opened',
origin: String, // Identifier
destination: String, // Identifier
timestamp: Date // Timestamp as recorded by participant
}
webrtc-connection-confirmed
Data was successfully transmitted between participants through the WebRTC connection.
{
type: 'webrtc-connection-confirmed',
origin: String, // Identifier
destination: String, // Identifier
timestamp: Date // Timestamp as recorded by participant
}
webrtc-connection-closed
The connection between participants closed.
{
type: 'webrtc-connection-closed',
origin: String, // Identifier
destination: String, // Identifier
timestamp: Date // Timestamp as recorded by participant
}
webrtc-connection-error
A connection to another participant failed, either before opening or after.
{
type: 'webrtc-connection-error',
origin: String, // Identifier
destination: String, // Identifier
error: Error,
timestamp: Date // Timestamp as recorded by participant
}