What is this?!
- A video-chat application.
- Pairs drunken users with other drunks.
- Automatic pairing system randomizes user experiences.
- An action-bar allows users to interact beyond boring video.
- Text chat, as well.
Our instructor told us to think of a fun idea, then make it. We decided on several, and I ended up spearheading this one with the help of a friend. It was a lot more challenging than I had initially anticipated, but what extremely rewarding in what I was able to learn about Node.js and Socket.io / WebRTC.
ShitFaceTime Consists of:
- A video chat utilizing a library, Peer.js, which handles the peer-to-peer video system.
- Text Chat which is accomplished using Socket.io’s event handling.
- An action-bar which contains various buttons and gimmicky noises… for fun?
Who Were We?
It was I and another classmate who essentially did all the work. Although it was supposed to be a large group project, we were nearing finals and most of us couldn’t justify putting enough time in. I was having fun so I finished it.
What Did I Learn?
- Socket.io making connections between users and handling events between the two (on connect, disconnect, message sent, etc.)
- Peer.js a convenient video-chat library that handled a lot of the back-end of connecting the video portion.
- Node.js this was my first time using Node and I was LOVING IT. One of the first frameworks I used was Laravel, which is amazing too in it’s own right, but Node just gave me so much more room to experiment… and fail in some cases – worth it.
- Heroku all the hosting is done on two separate Heroku servers: one is for the site and the other is for our Peer.js server. These run separately and were a pain in the ass to secure.
- SSL pretty much a guessing game by the end of it. We did get it secured but I still don’t know what did it or how.
What Were Our Challenges?
We struggled with finding servers that would properly host our Peer.js portion of the application. Peer.js needed connection to it’s own server so we sought out some TURN servers to do the trick. Unfortunately, they kept going down and resisted giving us the result we needed for, at the very least, our presentation during the last day of class. We were finally able to get it sorted out after much panic and speculation as to what the problem was. In the end, it taught us just how fickle working with free servers can be.
Justin did the pairing system, which is essentially a FIFO queue that is updated upon connections and disconnections of participants.
Getting the confetti to fall on one of the action buttons was cool. I found an implementation of it on CodePen and basically just activate it when the button is pressed. And the trap horn is supposed to be spammable… Lol. Executive decision by yours truly.
I loved this project as it made me far more comfortable with Node.js and I need to make another project using it soon. Socket’s are an interesting concept and I’d love to learn more about how I can use them in future work. I’ve been thinking of making a small multiplayer game just to see how it goes.