Book Image

Elevating React Web Development with Gatsby

Book Image

Elevating React Web Development with Gatsby

Overview of this book

Gatsby is a powerful React static site generator that enables you to create lightning-fast web experiences. With the latest version of Gatsby, you can combine your static content with server-side rendered and deferred static content to create a fully rounded application. Elevating React Web Development with Gatsby provides a comprehensive introduction for anyone new to GatsbyJS and will help you get up to speed in no time. Complete with hands-on tutorials and projects, this easy-to-follow guide starts by teaching you the core concepts of GatsbyJS. You'll then discover how to build performant, accessible, and scalable websites with the GatsbyJS framework. Once you've worked through the practical projects in the book, you'll be able to build anything from a personal website to large-scale applications with authentication and make your site rise through those SEO rankings. By the end of this Gatsby development book, you'll be well-versed in every aspect of the tool's performance and accessibility and have learned how to build client websites that your users will love.
Table of Contents (18 chapters)
1
Part 1: Getting Started
7
Part 2: Going Live
12
Part 3: Advanced Concepts

Gaining further insights with rooms

There is one element to socket.io events that we have not talked about yet but could be of great benefit in our application – rooms. Rooms are channels that a socket can join and leave. The server can emit messages to a room to broadcast an event to a subset of the clients connected to the server.

To demonstrate the concept of rooms, we will be breaking down our visitor count into more granular stats. Not only will we display to the user the count of total users on the site, but we will also provide them with the details of how many people are on their current page of the site. Let's get started:

  1. Update your server/app.js file's socket code so that it includes a new event:
    // defined at top of file
    const pathToRoom = (path) => 'Page-${path}';
    // defined in socket configuration
    socket.on("page-update", ({ currentPage, previousPage
       }) => {
        if (previousPage) {
          const previousRoom = pathToRoom...