如何关闭 C++ REST Sdk websocket?

How to close C++ REST Sdk websocket?

我在客户端使用 cpprestsdk,在服务器端使用 .net core 2.1。除了结束部分,一切正常。

// C++
web::websockets::client::websocket_callback_client _client;
//connecting and working with websocket...
_client.close().wait();

// C#
while (!Socket.CloseStatus.HasValue)
{
    //sending/reciving data
}
await Socket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "Connection closed", CancellationToken.None);

问题是 _client.close().wait();永远不会退出。服务器获取关闭请求并成功调用 CloseOutputAsync。而且我不明白为什么它永远不会退出 _client.close().wait();。看起来 C++ 和 .net 核心实现之间的握手存在一些问题,并且没有设法做出解决方法。有没有办法强制 _client.close().wait();关闭连接而不等待服务器的握手部分?还是关闭web socket的服务器代码有问题?

这是我自己的错误。我已经设置了使用 lock_guard 的 _client.set_close_handler(...)。这会导致死锁,因为此互斥锁在 close() 调用期间被锁定。