/webrtc-server

WebRTC signalling server w Luis Montes

Primary LanguageHTML

Luis + Reed WebRTC Project

Goal: Make an app where two people can communicate.

Floobits.com - Synchronous file editing

Peer connection between two computers

Vs. a normal app where there is a server between those two computers

Start with a server to get peer connected to find eachother

Tech missing from web browsers: Talking to anyone directly - because we can’t signal to each other

Pair Programming

One person’s driving, one person navigator

Strong style pair programming - “To go into the computer, an idea has to go through the other person’s head first”

Tech:

Server

NodeJS - JavaScript

Socket.io - NodeJS library

WebSockets - Push and pull messages between server

Express - Server Framework

Dev Environment

~~Floobits.com for pair programming~~

ZeroTier to connect our computers together

[X] Goal: Build a web server that Luis and Reed can talk to each other through in real time

  • [X] Define a JavaScript environment where we can install packages
  • [X] Create a socket.io and express server that echos. https://socket.io/docs/
  • [X] On the server, for any message on the topic “broadcast”, broadcast to all clients
  • [X] ~~*Log verbosely on the server*~~ [2020-04-03]
  • [X] ~~*Use socket.io’s rooms to send to a particular person*~~ [2020-04-03]
    • [X] Server should listen for join
    • [X] ~~*When a user joins they can broadcast FROM their own name*~~ [2020-04-03]
    • [X] ~~*A user can also send a DM to any user by name*~~ [2020-04-03]
    • [X] ~~*Input for text*~~ [2020-04-03]
    • [X] ~~*Normal text sends a braodcast*~~ [2020-04-03]
    • [X] ~~*If first character in text is “/”, then the text up to the first space is a command, and the rest of the text is interpreted for that command*~~ [2020-04-03]
    • [X] ~~*The only command is “dm”, sends a DM to the user whose name is the text up to the NEXT space “/dm name”*~~ [2020-04-03]
    • [X] ~~*Hit enter while focussed on text emulates button click*~~ [2020-04-03]
    • [X] ~~*button to send DM*~~ [2020-04-03]
    • [X] Each browser has a button that says join
    • [X] Input to write your name
    • [X] Each browser join a rooms by their unique username to receive DMs
    • [X] Each browser listens for DMs to the room of its username and logs
    • [X] Hiding the join interace after joining
    • [X] ~~*Other browsers send to the room*~~ [2020-04-03]
      • [X] ~~*Server should listen for “dm” message on socket*~~ [2020-04-03]
        • Takes name, message
  • [X] ~~*Don’t globally broadcast, send to a particular person*~~ [2020-04-03]
  • [X] ~~*Cleanup cruft on server*~~ [2020-04-03]

Next goal: Make that server only facilitate connection so that Luis and Reed can talk to eachother directly

Signaling is that facilitation

  • [ ] Use existing DM but add non-textual messages
  • [ ] UI to connect to another user directly
    • [ ] Make a /peer command to start this whole process
    • [ ] Have a RTCPeerConnection to repesent all the information to do with our connection
      • [ ] Supply a STUN server, that will reflect information about our networking status
      • [ ] Optionally supply a TURN server, to remain as a middleman for the peer connection
    • [X] ~~*Send a standard WebRTC Offer to another user*~~ [2020-04-03]
    • [ ] That user can send an Answer back
    • [ ] Handle ICE candidate events
    • [ ] Send text over a peer connection, without intermediary server, verifying peer connect

Next Big goal: Video