rawBytes method

Uint8List rawBytes()

Implementation

Uint8List rawBytes() {
  var bytes = BytesBuilder();
  var head = 0;
  if (fin) {
    head |= 0x80;
  }
  head |= opcode.value & opCodeMask;
  bytes.addByte(head);
  length = payload.length;
  if (length < 126) {
    bytes.addByte(payload.length.bytes(bit: BitWidth.byte).first |
        (mask ? maskMask : 0x00));
  } else if (length == 126) {
    bytes.addByte(0x7E | (mask ? maskMask : 0x00));
    bytes.add(payload.length.bytes(bit: BitWidth.short).toList());
  } else {
    bytes.addByte(0x7F | (mask ? maskMask : 0x00));
    bytes.add(payload.length.bytes(bit: BitWidth.long).toList());
  }

  var data = payload;
  if (mask) {
    maskingKey = Random().nextInt(4294967295).bytes();
    bytes.add(maskingKey!.toList());

    for (var i = 0; i < data.length; i++) {
      data[i] = data[i] ^ maskingKey![i % 4];
    }
  }

  bytes.add(data.toList());
  return bytes.toBytes();
}