Retain cycle - ChatService and ChatVC are holding strong references to each other. Delegate property should be weak
.
No need to repeat methods in ServerRequest, ServerMessage, ServerResponse extensions. Instead make extensions to Decodable and Encodable.
I don't like how encoding/decoding errors are ignored. Change response on server and client will not complain in any way.
No need to hardcode notifications names. Use Notification.Name.UIKeyboardWillShow
and Notification.Name.UIKeyboardWillHide
.