-
Notifications
You must be signed in to change notification settings - Fork 376
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
如何获取request的socket fd? #183
Comments
通过fd来确定唯一client标识是有问题的,因为连接可能会断开重连,重连后同一个client的fd也是不同的。你需要通过客户端发送一个唯一的key告诉服务端,服务端保存起来,重连后需要重新发送唯一key,这样才能不会因为client断线而找不到原来的client。 |
是的。但是,我们这边的业务,不关心具体的客户端。我们只是想确认连接,同一个客户端重连,他的连接变化我们也接受。 |
我仿照github上cinatra的用例6写的服务端程序,在debian系统中运行,下面是大致的代码 我创建了4个客户端连接到服务器,我期望的打印,每个连接应该是相同的,但事与愿违..... |
测试了很多次,都是这样,服务器程序启动之后,第一个客户端(上面的连接1),它的连接fd与发送消息的fd是不一样的。而且只有第一个这样,后续的客户端,他们的fd都是相同的。(我这里把req.get_conncinatra::NonSSL()->shared_from_this()当成是连接) |
@qicosmos 希望您能帮助我们确认一下这个问题。 |
这是web服务端接收客户端连接的处理接口,我们需要获取客户端的唯一标识,从而管理客户端。
`
void WsServer::HandleWs(request& req, response& res)
{
if (req.get_content_type() != content_type::websocket)
{
//gLog->Log("HandleWs error");
//LogFile::GetInstance()->Log("HandleWs error");
return;
}
} `
查看了一下代码,没有找到其fd的成员。
The text was updated successfully, but these errors were encountered: