in lib/src/copy/web_socket_impl.dart [330:360]
void _controlFrameEnd() {
switch (_opcode) {
case _WebSocketOpcode.CLOSE:
closeCode = WebSocketStatus.NO_STATUS_RECEIVED;
final payload = _payload.takeBytes();
if (payload.isNotEmpty) {
if (payload.length == 1) {
throw WebSocketChannelException('Protocol error');
}
closeCode = payload[0] << 8 | payload[1];
if (closeCode == WebSocketStatus.NO_STATUS_RECEIVED) {
throw WebSocketChannelException('Protocol error');
}
if (payload.length > 2) {
closeReason = utf8.decode(payload.sublist(2));
}
}
_state = CLOSED;
_eventSink!.close();
break;
case _WebSocketOpcode.PING:
_eventSink!.add(_WebSocketPing(_payload.takeBytes()));
break;
case _WebSocketOpcode.PONG:
_eventSink!.add(_WebSocketPong(_payload.takeBytes()));
break;
}
_prepareForNextFrame();
}