从关闭消息中检索代码/原因

Posted

技术标签:

【中文标题】从关闭消息中检索代码/原因【英文标题】:Retrieve the code/reason from a close message 【发布时间】:2015-03-12 16:00:25 【问题描述】:

我想从关闭消息中检索代码和原因。我已经用set_close_handler 注册了一个处理程序,但它没有得到有效载荷。另外,我发现websocketpp::close::extract_codewebsocketpp::close::extract_reason 接收有效载荷并返回相关部分。关闭的有效载荷是否存储在某个地方? connection_ptr 中是否有最后一个代码/原因?

【问题讨论】:

【参考方案1】:

连接对象有两个用于此目的的访问器方法:

close::status::value get_remote_close_code() const;
std::string const & get_remote_close_reason() const;

on_close 方法是通过connection_hdl 调用的,所以需要调用get_con_from_hdl() 来获取指向该连接的指针。这是一个例子:

void chat_server::on_close(connection_hdl hdl) 
    try 
        server::connection_ptr cp = m_server.get_con_from_hdl(hdl);
        websocketpp::close::status::value ccode = cp->get_remote_close_code();
        std::cout << "Closed connection. code " << ccode << " ["
            << cp->get_remote_close_reason() << "]" << std::endl;
     catch (const websocketpp::lib::error_code& e) 
        std::cout << __func__ << " failed because: " << e << "(" << e.message() << ")"
             << std::endl;
     catch (std::exception& e) 
        std::cout << e.what() << std::endl;
    

【讨论】:

以上是关于从关闭消息中检索代码/原因的主要内容,如果未能解决你的问题,请参考以下文章

PHP cURL:从 yahoo/google api 检索搜索数据? [关闭]

Java从数据库中检索下一个类似项目[关闭]

从phpMyAdmin数据库中检索数据不起作用[关闭]

如何从表中检索票数最高的候选人姓名[关闭]

从浏览器中检索我在 cpp 中的代理的地址(boost::Asio)[关闭]

通过快速关闭从函数中检索值