During Lockdown, a group of friends and I started getting together weekly, to play a board game using an online board game table, also known as a Virtual Tabletop (VTT). All the players can see a table, move pieces, and the current state of the table is synchronized for all players. The problem we ran into was with the performance of this VTT. Following an investigation, I discovered the VTT was using polling to retrieve data from the server. Periodically each client (player) would check with the server and if there had been any updates, the server would then send the updates to the client.
We had one player in Japan, one in Sweden and the rest were living in Ireland. Each move was taking over a minute to register the event with the server and update all the clients.
I decided to develop my own solution, with a focus on performance. I achieved this improvement in performance using Server-Sent Events. Server-Sent Events is a server push technology that enables a client to receive automatic updates from a server via HTTP. I developed my own VTT web app using HTML 5 Canvas/JavaScript for the Client-Side and NodeJS for the Server.
Server-Sent Events
Server-Sent Events allow data to be sent from server to client without the need for polling, The client creates a listener object, which waits for server data and triggers a function when data is received.
The key benefit is increased performance due to the reduction of data transmission. A drawback is that data can only be sent one way. Server -> Client. To send client data to the server I used a REST API.
Client
The client consisted of a HTML Canvas on which players could add various shaped pieces, players could also move, rotate and change the size of pieces. Any client interaction called a REST API, passed in details of the move, resize, rotation, etc.
Server
The sever is a NodeJS App hosted in Azure, the main job of the server is to maintain the current state of the game, the position, orientation and size of each piece. The server has REST APIs that when called, update the details of a particular piece. The server then sends the update to all the clients connected.
Conclusion
I began this project with performance being the goal, and I achieved this. Due to Azure Hosting and a reduction in the amount of data transmitted, the time to register updates was reduced from 1 minute to less than 10 seconds.
For all your Software Development needs please contact Aspira here.

Alan Lehane, Aspira Software Developer
Alan has been working with Aspira for 4 years as a Software Developer, specializing in Data Analytics & Machine Learning. He has provided a wide variety of services to Aspira’s clients including Software Development, Test Automation, Data Analysis & Machine Learning.
Related Blogs
Microsoft Project – Beginner 2 * ½ Day Sessions
Overview: This course will help you effectively use Microsoft Project for setting up projects, resource management, tracking progress, reporting and communicating to stakeholders. It is for project managers, team leaders and

What we learnt on our journey to ISO 27001 certification
As Aspira turns 15 years old this year, we achieved ISO27001:2017 certification: the international standard for Information Security. The basic goal of ISO 27001 is to enable organisations to implement
Microsoft Project – Intermediate 4 * ½ Day Sessions
Overview: This course will help you effectively use Microsoft Project for setting up projects, resource management, tracking progress, reporting, and communicating to stakeholders. It is for project managers, team leaders

Aspira achieve ISO 27001:2017 Certification
“Delivering a company Information Security Management System and achieving ISO certification is a true team effort. The breadth of information security spans every aspect of the business, not just IT,

Getting Started with Dynamics 365 Marketing
Dynamics 365 for Marketing is an advanced Marketing Automation solution that enables organisations to complete the buyer’s journey from Prospect to Customer through building a relationship. The Dynamics 365 Marketing

The Benefits of Aligning sales and marketing
Misaligned teams have trouble coordinating, operate with separate information, and miss goals and benchmarks because their metrics and data are different. Separate solutions put both teams at a disadvantage because each team only sees