Invoke callback on pings and pongs (API Change):

fix #248

This additionally invokes the pong callback for received pings, allowing
callers to more efficiently detect when a connection is still lively:

* pong_callback renamed to ping_callback
* Callback signature has an extra `bool` to indicate if the received
  control frame is a ping or pong.
This commit is contained in:
Vinnie Falco
2017-07-20 08:12:14 -07:00
parent a5a6563fe2
commit 765cb22b48
9 changed files with 131 additions and 107 deletions
+8 -6
View File
@@ -1062,9 +1062,10 @@ public:
// send ping and message
bool pong = false;
ws.set_option(pong_callback{
[&](ping_data const& payload)
ws.set_option(ping_callback{
[&](bool is_pong, ping_data const& payload)
{
BEAST_EXPECT(is_pong);
BEAST_EXPECT(! pong);
pong = true;
BEAST_EXPECT(payload == "");
@@ -1081,12 +1082,13 @@ public:
BEAST_EXPECT(op == opcode::binary);
BEAST_EXPECT(to_string(db.data()) == "Hello");
}
ws.set_option(pong_callback{});
ws.set_option(ping_callback{});
// send ping and fragmented message
ws.set_option(pong_callback{
[&](ping_data const& payload)
ws.set_option(ping_callback{
[&](bool is_pong, ping_data const& payload)
{
BEAST_EXPECT(is_pong);
BEAST_EXPECT(payload == "payload");
}});
ws.ping("payload");
@@ -1101,7 +1103,7 @@ public:
BEAST_EXPECT(pong == 1);
BEAST_EXPECT(to_string(db.data()) == "Hello, World!");
}
ws.set_option(pong_callback{});
ws.set_option(ping_callback{});
// send pong
c.pong(ws, "");