websocat 是否可以与 websocketpp 服务器正确处理关闭握手?

问题描述 投票:0回答:1

我正在使用

websocketpp
运行 websocket 服务器。出于应用原因,服务器可能会关闭连接。当我使用
websocat
连接到服务器并且服务器关闭连接时,关闭握手似乎超时,并且调用
on_close
处理程序。

你知道

websocat
是否正确处理结束握手吗? (如果没有那就奇怪了)

注意:我没有使用另一个 websocket 客户端进行测试。

关闭连接时我做错了什么吗?

为什么关闭握手超时时会调用

on_close
处理程序?

服务器代码:

#include <thread>
#include <websocketpp/config/asio.hpp>
#include <websocketpp/server.hpp>
#include <iostream>

typedef websocketpp::server<websocketpp::config::asio> server;

using websocketpp::lib::placeholders::_1;

void on_open_connection(server * srv, websocketpp::connection_hdl hdl) {
  using namespace std::chrono_literals;
  using namespace websocketpp::close::status;
  std::this_thread::sleep_for(3s);
  auto conn = srv->get_con_from_hdl(hdl);
  conn->close(normal, get_string(normal));
}

void on_close(websocketpp::connection_hdl hdl) {
  std::cout << "On close" << std::endl;
}

int main() {
    server closing_server;

    closing_server.init_asio();
    closing_server.set_open_handler(std::bind(&on_open_connection, &closing_server, ::_1));
    closing_server.set_close_handler(std::bind(&on_close, ::_1));
    closing_server.listen(9002);
    closing_server.start_accept();
    closing_server.run();
}
c++ websocket
1个回答
0
投票

不,websocat 目前无法正确执行关闭握手。它不会回复收到的关闭帧。我为此打开了一个问题:https://github.com/vi/websocat/issues/269

© www.soinside.com 2019 - 2024. All rights reserved.