WebSocket++, on_message event
WebSocket++, on_message event
我对这段代码有问题:
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <fstream>
#include <websocketpp/config/asio_no_tls_client.hpp>
#include <websocketpp/client.hpp>
#include <websocketpp/common/thread.hpp>
using namespace std;
class auth_client {
public:
typedef websocketpp::client<websocketpp::config::asio_client> client;
typedef websocketpp::lib::lock_guard<websocketpp::lib::mutex> scoped_lock;
typedef websocketpp::config::asio_client::message_type::ptr message_ptr;
typedef websocketpp::client<websocketpp::config::asio_client> client;
auth_client() : m_open(false), m_done(false) {
m_client.clear_access_channels(websocketpp::log::alevel::all);
m_client.set_access_channels(websocketpp::log::alevel::connect);
m_client.set_access_channels(websocketpp::log::alevel::disconnect);
m_client.set_access_channels(websocketpp::log::alevel::app);
m_client.init_asio();
using websocketpp::lib::placeholders::_1;
using websocketpp::lib::bind;
m_client.set_open_handler(bind(&auth_client::on_open, this, ::_1));
m_client.set_close_handler(bind(&auth_client::on_close, this, ::_1));
m_client.set_fail_handler(bind(&auth_client::on_fail, this, ::_1));
m_client.set_message_handler(bind(&auth_client::on_msg, this, ::_1));
}
void on_msg(websocketpp::connection_hdl hdl, message_ptr msg) {
m_client.get_alog().write(websocketpp::log::alevel::app,
"Connection opened, starting telemetry!");
scoped_lock guard(m_lock);
m_open = true;
}
void run(const std::string & uri) {
websocketpp::lib::error_code ec;
client::connection_ptr con = m_client.get_connection(uri, ec);
if (ec) {
m_client.get_alog().write(websocketpp::log::alevel::app,
"Get Connection Error: " + ec.message());
return;
}
m_hdl = con->get_handle();
m_client.connect(con);
websocketpp::lib::thread asio_thread(&client::run, &m_client);
asio_thread.join();
}
void on_open(websocketpp::connection_hdl hdl) {
scoped_lock guard(m_lock);
m_open = true;
}
void on_close(websocketpp::connection_hdl hdl) {
scoped_lock guard(m_lock);
m_done = true;
}
void on_fail(websocketpp::connection_hdl hdl) {
scoped_lock guard(m_lock);
m_done = true;
}
private:
client m_client;
websocketpp::connection_hdl m_hdl;
websocketpp::lib::mutex m_lock;
bool m_open;
bool m_done;
};
int _tmain(int argc, _TCHAR* argv[])
{
auth_client c;
std::string uri = "ws://localhost:9002";
c.run(uri);
return 0;
}
只是不断收到此错误:错误图片
我只是CPP的初学者,不了解所有功能。首先它说好像它听不懂"message_ptr"但后来我补充说:
typedef websocketpp::config::asio_client::message_type::ptr message_ptr;
它仍然不起作用。如何解决?
你需要在 set_message_handler() 中添加 ::_2,你只有 ::_1。 on_message() 是双向的。
m_client.set_message_handler(bind(&auth_client::on_msg, this, ::_1, ::_2));
相关文章:
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题
- 为什么构造函数 Message(const T&data) 与 Message(T&& data) 冲突,当 T = int&时?
- cl::Event::waitForEvents returns -7 (CL_EXEC_STATUS_ERROR_ F
- AMQP-CPP RabbitMQ 接收额外的符号 message.body() 比 message.size() 大
- char array[sizeof(Message)]; vs char* array = new char[sizeo
- Protobuf:无法在 message.pb.h 文件中打开包含文件 common.h
- QT QPushButton Press Event
- mmap with /dev/input/event*
- 如何使用 epoll(void* event.data.ptr) 管理 Connection 的生命周期
- 从 recv() 读取多个"message"
- Android Studio 3.2:cmake message()输出显示在哪里
- 对在协议缓冲区中使用 Message::P arseFromIstream 感到困惑
- QGraphicsScene selectionChanged() event
- 为什么 event.mouseWheelScroll.delta 总是使用 SFML 返回 0
- 我正在尝试在Visual Studio 2013中编写我的第一个"Hello World"代码。为什么我会收到"IntelliSense: no operator message"和"error C2
- OpenCL C++绑定:等待单个 cl::Event
- 类型 "void (Biometria::*)(char *idSensor, GRCAP_FINGER_EVENTS event)" 的参数与类型 "GRCAP_STATUS_EVENT_PROC
- boost::system::error_code::message()引发了带有boost::asio套接字的访问冲突
- 在Message Box Husing手柄中显示DLL的路径
- 在/dev/input/event*中动态查找鼠标事件id