DecompositionSprint 3β successCompiled Learning ObjectivesWebSocketsStream live updates from a server using WebSockets.Discuss the trade-offs of using WebSockets or polling.Describe properties of message formats (e.g. including a command name).Adding like/dislikeIdentify what data needs to be stored and exchanged between a client and server.Devise a scheme for differentiating messages with different meanings (e.g. a new message vs a new like).Contrast giving updated values as absolute values or relative changes.Implement an end-to-end feature involving data updates and reconciliation across a client and server.Different experiences for different usersTODOExtracting common functionalityIdentify and explain the risks and costs of duplicate codeExtract functionality used by multiple route handlers into a common functionExtracting a middlewareIdentify and explain the risks and costs of manually calling code (e.g. authentication validators/extractors) from multiple route handlersExplain the middleware patternImplement and wire up a middleware