Skip to content
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

not handle websocket close status code #86

Open
315567599 opened this issue May 27, 2023 · 0 comments
Open

not handle websocket close status code #86

315567599 opened this issue May 27, 2023 · 0 comments

Comments

@315567599
Copy link

void WebSocket::PrepareSendFrame(uint8_t opcode, bool mask, const void* buffer, size_t size, int status)
{
// Clear the previous WebSocket send buffer
_ws_send_buffer.clear();

// Append WebSocket frame opcode
_ws_send_buffer.push_back(opcode);

// Append WebSocket frame size
if (size <= 125)
    _ws_send_buffer.push_back((size & 0xFF) | (mask ? 0x80 : 0));
else if (size <= 65535)
{
    _ws_send_buffer.push_back(126 | (mask ? 0x80 : 0));
    _ws_send_buffer.push_back((size >> 8) & 0xFF);
    _ws_send_buffer.push_back(size & 0xFF);
}
else
{
    _ws_send_buffer.push_back(127 | (mask ? 0x80 : 0));
    for (int i = 7; i >= 0; --i)
        _ws_send_buffer.push_back((size >> (8 * i)) & 0xFF);
}

if (mask)
{
    // Append WebSocket frame mask
    _ws_send_buffer.push_back(_ws_send_mask[0]);
    _ws_send_buffer.push_back(_ws_send_mask[1]);
    _ws_send_buffer.push_back(_ws_send_mask[2]);
    _ws_send_buffer.push_back(_ws_send_mask[3]);
}

// Resize WebSocket frame buffer
size_t offset = _ws_send_buffer.size();
_ws_send_buffer.resize(offset + size);

// Mask WebSocket frame content
const uint8_t* data = (const uint8_t*)buffer;
for (size_t i = 0; i < size; ++i)
    _ws_send_buffer[offset + i] = data[i] ^ _ws_send_mask[i % 4];

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant