还是set_http_handler的name参数类型问题
FlushHip opened this issue · 1 comments
FlushHip commented
今天就遇到#198 这个问题了。相关原因这个issues已经陈诉。
void websocket_server::start() {
server_.enable_timeout(false);
server_.set_keep_alive_timeout(std::numeric_limits<long>::max());
server_.listen(ip_, port_);
std::string_view uri{"/usb_capture"};
server_.set_http_handler<cinatra::GET, cinatra::POST>(
uri, [this](cinatra::request& request, cinatra::response& response) {
if (request.get_content_type() !=
cinatra::content_type::websocket) {
LOG_WARN << "someone use other protocol for websocket, type "
": "
<< static_cast<int>(request.get_content_type());
}
request.on(cinatra::ws_open, [this](cinatra::request& request) {
ws_connect_handler(request);
});
request.on(cinatra::ws_message, [this](cinatra::request& request) {
ws_message_handler(request);
});
request.on(cinatra::ws_close, [this](cinatra::request& request) {
ws_close_handler(request);
});
request.on(cinatra::ws_error, [this](cinatra::request& request) {
ws_error_handler(request);
});
});
LOG_INFO << "start url ws://" << ip_ << ":" << port_ << uri;
thread_ = std::make_unique<std::thread>([this] { main(); });
}
void websocket_server::main() {
server_.run();
}
也是自己还没有完全转到string_view
(用string_view
做name
的参数类型确实是更合理的)上的原因吧。希望写一点注释,不然那些习惯用string
来保存字面量的使用者很容易犯这种生命周期的问题。
qicosmos commented
已经改成string 了