2015-11-07 2 views
0

Я изменил пример «Extended Connection Storage» на http://www.zaphoyd.com/websocketpp/manual/common-patterns/storing-connection-specificsession-information и может обновлять некоторые данные, отправленные с клиента. При изменении данных я хотел бы распространить это на всех подключенных клиентов. Я хочу выполнить итерацию всех подключений, но внизу документация указывает «Примечание. В этом примере нет возможности перечислять все соединения».Итерация всех подключений на сервере websocketpp

Вместо этого я использую примеры на http://www.zaphoyd.com/websocketpp/manual/common-patterns/server-initiated-messages?

псевдокод:

void on_message(connection_hdl hdl, server::message_ptr msg) { 
    if (jdata["type"] == "update") { 
     for (auto it : connections) { 
      m_server.send(hdl, msg); 
     } 
    } 
} 

ответ

0

Время от просмотра телевизора с детьми этого качества времени. Там я неожиданно вспомнил другие примеры на websocketpp:

private: 
    typedef std::set<connection_hdl, std::owner_less<connection_hdl>> con_list; 
    con_list m_connections; 

void on_open(connection_hdl hdl) { 
    m_connections.insert(hdl); 
} 

void on_close(connection_hdl hdl) { 
    m_connections.erase(hdl); 
} 


if (jdata["type"] == "update") { 
    for (auto it : m_connections) { 
     msg->set_payload(table.dump()); 
      m_server.send(it, msg); 
     } 
    } 
} 
Смежные вопросы