Пример Websocket boost/beast с клиентом/серверомC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Пример Websocket boost/beast с клиентом/сервером

Сообщение Anonymous »

Может быть, кто-нибудь может предоставить простой пример (или ссылки) о том, как настроить клиент и сервер с помощью веб-сокета из библиотеки boost/beast? Мне нужен пример того, как обрабатывать входное сообщение на сервере и отвечать/не реагировать на него (чтобы клиент не аварийно завершал работу), как отправлять некоторые данные на определенные «подписанные» соединения и как обрабатывать их на стороне клиента.
Я нашел этот пример, но он не работает должным образом:
Клиентская сторона:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

namespace asio = boost::asio;
namespace beast = boost::beast;
namespace websocket = beast::websocket;
using tcp = asio::ip::tcp;
using json = nlohmann::json;

// Thread-safe queue class
template
class ThreadSafeQueue {
public:
void push(const T& value) {
std::lock_guard lock(mtx_);
queue_.push(value);
cond_var_.notify_one();
}

bool try_pop(T& value) {
std::lock_guard lock(mtx_);
if (queue_.empty()) {
return false;
}
value = queue_.front();
queue_.pop();
return true;
}

void wait_and_pop(T& value) {
std::unique_lock lock(mtx_);
cond_var_.wait(lock, [this] { return !queue_.empty(); });
value = queue_.front();
queue_.pop();
}

private:
std::queue queue_;
mutable std::mutex mtx_;
std::condition_variable cond_var_;
};

class Singleton {
public:
ThreadSafeQueue* data_queue;
websocket::stream* ws;

Singleton(
ThreadSafeQueue* data_queue_,
websocket::stream* ws_
) :
data_queue(data_queue_),
ws(ws_)
{}
};

void readData(Singleton& data) {
try {
beast::flat_buffer buffer;
while (true) {
data.ws->read(buffer);
auto received_message = beast::buffers_to_string(buffer.data());
json received_json = json::parse(received_message);

data.data_queue->push(received_json);
std::cout

Подробнее здесь: https://stackoverflow.com/questions/785 ... ent-server
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Пример Websocket boost/beast с клиентом/сервером
    Anonymous » » в форуме C++
    0 Ответы
    56 Просмотры
    Последнее сообщение Anonymous
  • Сервер Boost.Beast WebSocket - «Ошибка чтения: операция ввода-вывода была прервана» при подключении клиента
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Сервер Boost.Beast WebSocket - «Ошибка чтения: операция ввода-вывода была прервана» при подключении клиента
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Использование Boost::Beast с CMake для WebSocket
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Использование Boost::Beast с CMake для WebSocket
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»