我正在尝试使用Cpprest SDK(Casablanca)实现Websocket客户端。我成功建立了Web套接字连接并能够发送/接收消息。收到的响应作为websocket_incoming_message的实例,该实例具有方法extract_string(),其定义为,]
_ASYNCRTIMP pplx::task<std::string> web::websockets::client::websocket_incoming_message::extract_string ( ) const
因此返回,常量字符串。
我正在尝试将此字符串分配给函数局部字符串变量,以便可以将其返回给调用方法。但是,我收到以下错误,
error: passing ‘const string {aka const std::basic_string<char>}’ as ‘this’ argument of ‘std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ discards qualifiers [-fpermissive]
下面是我的代码块,
std::string WebSocketUtility::send_command(const char* command){
websocket_outgoing_message o_msg;
std::string ws_response;
o_msg.set_utf8_message(command);
client->send(o_msg).then([](){
log("Message Sent!!!\n");
});
client->receive().then([ws_response](websocket_incoming_message i_msg){
return i_msg.extract_string();
}).then([ws_response](std::string ws_body){
ws_response = ws_body;
});
log("WS_RESPONSE:%s:\n",ws_response.c_str());
return ws_response;
}
我已经尝试过1,声明ws_response作为参考2.在lambda中捕获ws_response作为参考3.将ws_response声明为cpprest json,并将响应分配为json字段(ws_response [U(“ output”)] = json :: value :: string(ws_body.c_str()))
没有运气。
我在C ++中没有太多的编码经验,因此一直在苦苦挣扎。
有人可以帮助我如何在lambda之外捕获此响应,以便我将值返回给调用方法吗?
感谢与问候,Swathi Desai
我正在尝试使用Cpprest sdk(卡萨布兰卡)实现Websocket客户端。我成功建立了Web套接字连接并能够发送/接收消息。响应以...
没有理由让此lambda捕获ws_response
,因为它根本不使用ws_response
: