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.