# Miro whiteboard design ## Communication ### WebSockets It is a specification to allow asynchronous bidirectional communication between a client and a server. While similar to TCP sockets, it is a protocol that operates as an upgraded HTTP connection, exchanging variable-length frames between the two parties, instead of a stream. The WebSocket protocol defines two types of messages (text and binary), but their content is undefined. ### STOMP It defines a protocol for clients and servers to communicate with messaging semantics. It does not define any implementation details, but rather addresses an easy-to-implement wire protocol for messaging integrations. It provides higher semantics on top of the WebSockets protocol and defines a handful of frame types that are mapped onto WebSockets frames. Some of these types are... * connect * subscribe * unsubscribe * send (messages sent to the server) * message (for messages send from the server) BEGIN, COMMIT, ROLLBACK (transaction management) STOMP protocol defines a mechanism for client and server to negotiate a sub-protocol (that is, a higher-level messaging protocol) to use on top of WebSocket to define following things: what kind of messages each can send, what the format is, the content of each message, and so on. The use of a sub-protocol is optional but, either way, the client and the server need to agree on some protocol that defines message content. ## Anonimous users ## Data ## Storage