Must websockets have heartbeats?

前端 未结 3 1897
时光取名叫无心
时光取名叫无心 2021-02-07 08:57

When I read about websockets, heartbeats are usually mentioned as a must have. MDN even writes about a special opcode for heartbeats.

But are heartbeats a mandatory part

3条回答
  •  情话喂你
    2021-02-07 09:46

    The RFC 6455, the current reference for the WebSocket protocol, defines some control frames to communicate state about the WebSocket:

    • Close: 0x8
    • Ping: 0x9
    • Pong: 0xA

    Ping and Pong are used for heartbeat and allows you to check if the client is still responsive. See the quote below:

    A Ping frame may serve either as a keepalive or as a means to verify that the remote endpoint is still responsive.

    But when the client gets a Ping, a Pong must be sent back to the server. See the quote:

    Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in response, unless it already received a Close frame. It SHOULD respond with Pong frame as soon as is practical.

    Bottom line

    When designing both client and server, supporting heartbeats is up to you. But if you need to check if the connection is still alive, Ping and Pong frames are the standard way to do it.

    Just keep in mind that if a Ping is sent and a Pong is not sent back, one peer may assume that the other peer is not alive anymore.

提交回复
热议问题