The struggle with year 2 project!


This is a bit of a more personal post (in that it talks about how I approached a project rather than being a tutorial) but I thought it’d be interesting to share anyway.

Our year 2 project in University is actually really open — we can work on pretty much whatever we want. I wanted to work with something new and exciting, so I chose to do a project built around WebRTC. People would be able to make accounts and build teams then arrange and hold audio and video meetings that worked using WebRTC. There would also be a reminder before joining a meeting etc.

I had no experience with WebRTC, so I knew this would be challenging — and I wasn’t wrong. The first problem was the actual signalling to get the WebRTC conversation to start. You can use about anything for that, but the best way is because it supports multiplexing, and you can have signalling with more than two clients. Problem is, I hadn’t realised this at first. Some form of signalling worked even with AJAX, and I switched to websockets soon afterwards, and it worked as long as I had two clients. I couldn’t get it to work with more than two though, and after spending countless hours with this article I finally got a three-way chat to work using a server (and changing my code to match the one in that tutorial).

After that it got a bit quieter, tidying the GUI app and adding some of the more simple functionality such as log in, register, reminder emails etc. But it’s about to get busy again as I’ll attempt to do file transfer and desktop sharing too, to offer a fully-featured meeting suite ^_^
Of course I played it safe by not including these parts in the developed Minimum Viable Product, so if I don’t succeed I won’t fail the assignment :p

It’s overall a great project and I’m learning a lot for it, although it can get challenging with the WebRTC api and all!

And I think that’s it from me in 2013 😉 see you next year!

PS: If you want to know more about WebRTC, I’d read this, this, and this article, watch the video and check out the code.

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.