std::string data((const char*)buf->data(),bytes_transferred);
recycle_buffer(buf);
std::string key="Sec-WebSocket-Key:";
auto pos = data.find(key);
auto posEnd = data.find("\r\n",pos);
auto value = data.substr(pos + key.length(),posEnd - (pos + key.length()));
std::string sha1Src = trim(value);
sha1Src += std::string("258EAFA5-E914-47DA-95CA-C5AB0DC85B11");
unsigned char sha1out[20];
sha1((const unsigned char *)sha1Src.c_str(),sha1Src.length(),sha1out);
std::vector<unsigned char> data64;
for( auto c: sha1out) data64.push_back(c);
std::ostringstream os_rsp;
os_rsp<<"HTTP/1.1 101 Switching Protocols\r\n"
<<"Upgrade: websocket\r\n"
<<"Connection: Upgrade\r\n"
<<"Sec-WebSocket-Accept: "<<base64Encode(data64)<<"=\r\n"
<
Web Socket rfc6455 握手 (C++)
最新推荐文章于 2022-07-22 11:42:12 发布