mirror of
https://github.com/boostorg/beast.git
synced 2026-05-05 12:14:23 +02:00
control_callback replaces ping_callback (API Change):
fix #322 The new callback is informed of all frame types including close. Actions Required: * Change calls to websocket::stream::ping_callback to use websocket::stream::control_callback * Change user defined ping callbacks to have the new signature and adjust the callback definition appropriately.
This commit is contained in:
@@ -187,11 +187,11 @@ boost::asio::ip::tcp::socket sock{ios};
|
||||
{
|
||||
stream<boost::asio::ip::tcp::socket> ws{ios};
|
||||
//[ws_snippet_17
|
||||
ws.ping_callback(
|
||||
[](bool is_pong, ping_data const& payload)
|
||||
ws.control_callback(
|
||||
[](frame_type kind, string_view payload)
|
||||
{
|
||||
// Do something with the payload
|
||||
boost::ignore_unused(is_pong, payload);
|
||||
boost::ignore_unused(kind, payload);
|
||||
});
|
||||
//]
|
||||
|
||||
|
||||
+20
-15
@@ -1656,15 +1656,17 @@ public:
|
||||
c.close(ws, {close_code::going_away, "Going away"});
|
||||
restart(error::closed);
|
||||
|
||||
bool once;
|
||||
|
||||
// send ping and message
|
||||
bool pong = false;
|
||||
ws.ping_callback(
|
||||
[&](bool is_pong, ping_data const& payload)
|
||||
once = false;
|
||||
ws.control_callback(
|
||||
[&](frame_type kind, string_view s)
|
||||
{
|
||||
BEAST_EXPECT(is_pong);
|
||||
BEAST_EXPECT(! pong);
|
||||
pong = true;
|
||||
BEAST_EXPECT(payload == "");
|
||||
BEAST_EXPECT(kind == frame_type::pong);
|
||||
BEAST_EXPECT(! once);
|
||||
once = true;
|
||||
BEAST_EXPECT(s == "");
|
||||
});
|
||||
c.ping(ws, "");
|
||||
ws.binary(true);
|
||||
@@ -1673,18 +1675,21 @@ public:
|
||||
// receive echoed message
|
||||
multi_buffer db;
|
||||
c.read(ws, db);
|
||||
BEAST_EXPECT(pong == 1);
|
||||
BEAST_EXPECT(once);
|
||||
BEAST_EXPECT(ws.got_binary());
|
||||
BEAST_EXPECT(to_string(db.data()) == "Hello");
|
||||
}
|
||||
ws.ping_callback({});
|
||||
ws.control_callback({});
|
||||
|
||||
// send ping and fragmented message
|
||||
ws.ping_callback(
|
||||
[&](bool is_pong, ping_data const& payload)
|
||||
once = false;
|
||||
ws.control_callback(
|
||||
[&](frame_type kind, string_view s)
|
||||
{
|
||||
BEAST_EXPECT(is_pong);
|
||||
BEAST_EXPECT(payload == "payload");
|
||||
BEAST_EXPECT(kind == frame_type::pong);
|
||||
BEAST_EXPECT(! once);
|
||||
once = true;
|
||||
BEAST_EXPECT(s == "payload");
|
||||
});
|
||||
ws.ping("payload");
|
||||
c.write_frame(ws, false, sbuf("Hello, "));
|
||||
@@ -1694,10 +1699,10 @@ public:
|
||||
// receive echoed message
|
||||
multi_buffer db;
|
||||
c.read(ws, db);
|
||||
BEAST_EXPECT(pong == 1);
|
||||
BEAST_EXPECT(once);
|
||||
BEAST_EXPECT(to_string(db.data()) == "Hello, World!");
|
||||
}
|
||||
ws.ping_callback({});
|
||||
ws.control_callback({});
|
||||
|
||||
// send pong
|
||||
c.pong(ws, "");
|
||||
|
||||
Reference in New Issue
Block a user