25 Nisan 2018 Çarşamba

beast websocket stream Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <boost/beast/core.hpp>
#include <boost/beast/http.hpp>
#include <boost/beast/version.hpp>
#include <boost/beast/websocket.hpp>
Şu satırı dahil ederiz.
namespace websocket = boost::beast::websocket; // from <boost/beast/websocket.hpp>
constructor
Şöyle yaparız.
boost::asio::io_context ioc = ...;
 websocket::stream<tcp::socket> ws (ioc);
async_accept metodu
Örnek ver

async_close metodu
Şöyle yaparız.
ws.async_close(websocket::close_code::normal,
  std::bind( &session::on_close, shared_from_this(),
              std::placeholders::_1)
);
async_handshake metodu
Bağlanma işlemi bittikten sonra şöyle yaparız.
std::string host = ...;

ws.async_handshake(host_, "/",
  std::bind( &session::on_handshake, shared_from_this(),std::placeholders::_1 )
);
async_read metodu
Şöyle yaparız.
boost::beast::multi_buffer buffer;

ws.async_read(buffer,
  std::bind( &session::on_read, shared_from_this(),
            std::placeholders::_1, std::placeholders::_2 )
);
async_write metodu
Örnek
Şöyle yaparız.
const std::string text = ...;
ws.async_write(boost::asio::buffer(text),
  std::bind( &session::on_write, shared_from_this(),
  std::placeholders::_1, std::placeholders::_2 )
);
Örnek
Elimizde bir strand olsun.
boost::asio::strand<boost::asio::io_context::executor_type> strand;
Şöyle yaparız.
ws.async_write(buffer,
  boost::asio::bind_executor(strand,
    std::bind(&myclass::on_write, shared_from_this(),
               std::placeholders::_1, std::placeholders::_2)));

close metodu
Örnek ver

got_text metodu
Örnek ver

handshake metodu
websocket istemcisini sunucuya bağlamak için kullanılır.

next_layer metodu
Örnek
resolve işlemi bittikten sonra bağlanmak için şöyle yaparız.
tcp::resolver::results_type results = ...;
boost::asio::async_connect(ws.next_layer (),
  results.begin(), results.end(),
  std::bind( &session::on_connect, shared_from_this(),std::placeholders::_1 )

Örnek
Şöyle yaparız.
// Closing the socket cancels all outstanding operations. They
// will complete with boost::asio::error::operation_aborted
ws.next_layer().shutdown(tcp::socket::shutdown_both, ec);
ws.next_layer().close(ec);
read metodu
Şöyle yaparız.
boost::beast::multi_buffer buffer;

ws.read(buffer);
Bu çağrıdan sonra okunan veriye erişmek için şöyle yaparız.
buffer.data()
text metodu
Şöyle yaparız.
// Echo the message
ws.text(ws.got_text());
write metodu
Örnek ver

Hiç yorum yok:

Yorum Gönder