This RFC for HTTP/1.1 says
The HTTP protocol is a request/response protocol.
Moving to newer HTTP protocols - HTTP/2 spec says that each stream is a bidirectional sequence of frames. Both client and the server can initiate stream creation. (Although server stream creation is in response to a client request and only mentioned with regards to H2 server push which is not relevant anymore)
gRPC and Websockets are run on a single client initiated H2 stream as well. Both allows bidirectional communication.
- Does this mean that H2 and H3 are no more request/response protocols?
- Is a single H2 stream full duplex? (By full duplex I mean can the client and server write and read messages from a single stream at the same time. I'm not talking about H2 multiplexing here.)
- Can the server send unsolicited messages to the client? (except for server push - since its not relevant anymore). If not, how does gRPC or Websockets bidirectional communication work over H2?