Real time updates on the Notes home page
The first thing we'll do with Socket.IO is change the Notes home page to automatically update the list of notes as notes are edited or deleted. It means a little bit of work in routes/index.js
and views/index.ejs
, and a lot of work in the Notes model.
Where the Notes model so far has been a passive repository of documents, it now needs to emit events to any interested parties. This is the listener pattern, and, in theory, there will be code that is interested in knowing when notes are created, edited, or destroyed. At the moment, we'll use that knowledge to update the Notes home page, but there are many potential other uses of that knowledge.
The Notes model as an EventEmitter class
The EventEmitter
is the class that implements listener support. Let's create a new module, models/notes-events.js
, containing the following:
'use strict'; const EventEmitter = require('events'); class NotesEmitter extends EventEmitter {} module.exports = new NotesEmitter...