raisim::server::websocket
namespace
Classes
classFrameDecoder — Decodes what a client sends: masked frames whose binary messages may come in fragments, with control frames between them.structUpgradeRequest — What the server needs from a WebSocket upgrade request.
Enumerations
Opcode
#include <raisim/server/WebSocket.hpp>
enum Opcode : uint8_t| Enumerator | Value |
|---|---|
kContinuation | 0x0 |
kText | 0x1 |
kBinary | 0x2 |
kClose | 0x8 |
kPing | 0x9 |
kPong | 0xA |
Functions
sha1
#include <raisim/server/WebSocket.hpp>
std::array<uint8_t, 20> sha1(std::string_view text)base64
#include <raisim/server/WebSocket.hpp>
std::string base64(const uint8_t *data, size_t size)acceptKey
#include <raisim/server/WebSocket.hpp>
std::string acceptKey(std::string_view clientKey)The Sec-WebSocket-Accept value that answers a client's Sec-WebSocket-Key.
parseUpgradeRequest
#include <raisim/server/WebSocket.hpp>
std::optional<UpgradeRequest> parseUpgradeRequest(std::string_view head)Parses an HTTP request head that ends with an empty line. Returns nothing unless it is a GET request asking for a version 13 WebSocket upgrade with a 16-byte key.
upgradeResponse
#include <raisim/server/WebSocket.hpp>
std::string upgradeResponse(const UpgradeRequest &request)refusalResponse
#include <raisim/server/WebSocket.hpp>
std::string refusalResponse(std::string_view status)isDefaultViewerOrigin
#include <raisim/server/WebSocket.hpp>
bool isDefaultViewerOrigin(std::string_view origin)Origins whose pages may connect by default: raisim.com and pages served from this computer.
frameHeader
#include <raisim/server/WebSocket.hpp>
size_t frameHeader(
uint8_t opcode,
uint64_t payloadBytes,
uint8_t(&header)[kMaxFrameHeaderBytes])Writes the header of a final, unmasked server frame and returns its length.
Variables
kMaxRequestHeadBytes
#include <raisim/server/WebSocket.hpp>
constexpr size_t kMaxRequestHeadBytesThe longest HTTP request head the server reads before it gives up on an upgrade.
kMaxFrameHeaderBytes
#include <raisim/server/WebSocket.hpp>
constexpr size_t kMaxFrameHeaderBytesThe longest server frame header.