Skip to content
Thursday 17th January 2018

'Real-time web applications with Websockets'

Sheffield Technology Parks - Arundel Street

Mike Lehan

As people carry out more of their daily interactions online, giving them the best experience possible is our key focus as web software engineers. One way we can do that is providing views which can update dynamically as information changes - train times that adapt to delays without a page refresh, new comments on social media items engaging users by appearing in real time, bids on ecommerce websites updating as the market changes. It's not just chat apps that can benefit from real time components.

Websockets allows a persistent 2-way connection between client and server that you can use to adapt faster to changing data. WebRTC provides a universal API for two browsers to establish a direct link, no servers involved (sort of ) to stream audio, video or files direct.

In the talk we walked through where these real time services come from, and what you can use them for. We looked at client and server side APIs, including the popular PHP event library React and PHP Websocket client Ratchet. We drilled into the difference between 2-way interactions and existing so-called dynamic web technologies like AJAX, and explored how real-time event based protocols can take on a lot of what we presume only HTTP can do. Finally, we saw some common pitfalls when integrating both Websockets and WebRTC into our own applications, including monitoring, logging and 3rd party tools.

Mike Lehan

Mike has been working in web application development using PHP for 10 years, including 4 years managing a development team for a property tech startup, some time spent building a real time application for managing operations at skydiving centres, and some time freelancing. Through working on business critical systems with real time elements Mike has learned the value of comprehensive logging & monitoring, redundant checks on applications & infrastructure, and of course well written testable code!

Share this: