# Class TCEFServerComponent

Description
Hierarchy
Fields
Methods
Properties

## Unit

uCEFServerComponent

## Declaration

`type TCEFServerComponent = class(TComponent, IServerEvents)`

## Description

The TCEFServerComponent class puts together all CEF server procedures, functions, properties and events in one place.

## Hierarchy

- TObject
- TPersistent
- TComponent
- TCEFServerComponent

## Overview

### Fields

| `FHandler: ICefServerHandler;`
| `FServer: ICefServer;`
| `FInitialized: boolean;`
| `FOnServerCreated: TOnServerCreated;`
| `FOnServerDestroyed: TOnServerDestroyed;`
| `FOnClientConnected: TOnClientConnected;`
| `FOnClientDisconnected: TOnClientDisconnected;`
| `FOnHttpRequest: TOnHttpRequest;`
| `FOnWebSocketRequest: TOnWebSocketRequest;`
| `FOnWebSocketConnected: TOnWebSocketConnected;`
| `FOnWebSocketMessage: TOnWebSocketMessage;`

### Methods

| `function GetInitialized: boolean;`
| `function GetIsRunning: boolean;`
| `function GetAddress: ustring;`
| `function GetHasConnection: boolean;`
| `procedure doOnServerCreated(const server: ICefServer); virtual;`
| `procedure doOnServerDestroyed(const server: ICefServer); virtual;`
| `procedure doOnClientConnected(const server: ICefServer; connection_id: Integer); virtual;`
| `procedure doOnClientDisconnected(const server: ICefServer; connection_id: Integer); virtual;`
| `procedure doOnHttpRequest(const server: ICefServer; connection_id: Integer; const client_address: ustring; const request: ICefRequest); virtual;`
| `procedure doOnWebSocketRequest(const server: ICefServer; connection_id: Integer; const client_address: ustring; const request: ICefRequest; const callback: ICefCallback); virtual;`
| `procedure doOnWebSocketConnected(const server: ICefServer; connection_id: Integer); virtual;`
| `procedure doOnWebSocketMessage(const server: ICefServer; connection_id: Integer; const data: Pointer; data_size: NativeUInt); virtual;`
| `procedure InitializeEvents;`
| `constructor Create(AOwner: TComponent); override;`
| `destructor Destroy; override;`
| `procedure CreateServer(const address : ustring = DEFAULT_CEFSERVER_ADDRESS; port : uint16 = DEFAULT_CEFSERVER_PORT; backlog : Integer = DEFAULT_CEFSERVER_BACKLOG);`
| `procedure Shutdown;`
| `function IsValidConnection(connection_id: Integer) : boolean;`
| `procedure SendHttp200response(connection_id: Integer; const content_type: ustring; const data: Pointer; data_size: NativeUInt);`
| `procedure SendHttp404response(connection_id: Integer);`
| `procedure SendHttp500response(connection_id: Integer; const error_message: ustring);`
| `procedure SendHttpResponse(connection_id, response_code: Integer; const content_type: ustring; content_length: int64; const extra_headers: ICefStringMultimap);`
| `procedure SendRawData(connection_id: Integer; const data: Pointer; data_size: NativeUInt);`
| `procedure CloseConnection(connection_id: Integer);`
| `procedure SendWebSocketMessage(connection_id: Integer; const data: Pointer; data_size: NativeUInt);`

### Properties

| `property Initialized : boolean read GetInitialized;`
| `property IsRunning : boolean read GetIsRunning;`
| `property Address : ustring read GetAddress;`
| `property HasConnection : boolean read GetHasConnection;`
| `property OnServerCreated : TOnServerCreated read FOnServerCreated write FOnServerCreated;`
| `property OnServerDestroyed : TOnServerDestroyed read FOnServerDestroyed write FOnServerDestroyed;`
| `property OnClientConnected : TOnClientConnected read FOnClientConnected write FOnClientConnected;`
| `property OnClientDisconnected : TOnClientDisconnected read FOnClientDisconnected write FOnClientDisconnected;`
| `property OnHttpRequest : TOnHttpRequest read FOnHttpRequest write FOnHttpRequest;`
| `property OnWebSocketRequest : TOnWebSocketRequest read FOnWebSocketRequest write FOnWebSocketRequest;`
| `property OnWebSocketConnected : TOnWebSocketConnected read FOnWebSocketConnected write FOnWebSocketConnected;`
| `property OnWebSocketMessage : TOnWebSocketMessage read FOnWebSocketMessage write FOnWebSocketMessage;`

## Description

### Fields

| `FHandler: ICefServerHandler;`
This item has no description.

| `FServer: ICefServer;`
This item has no description.

| `FInitialized: boolean;`
This item has no description.

| `FOnServerCreated: TOnServerCreated;`
IServerEvents

| `FOnServerDestroyed: TOnServerDestroyed;`
This item has no description.

| `FOnClientConnected: TOnClientConnected;`
This item has no description.

| `FOnClientDisconnected: TOnClientDisconnected;`
This item has no description.

| `FOnHttpRequest: TOnHttpRequest;`
This item has no description.

| `FOnWebSocketRequest: TOnWebSocketRequest;`
This item has no description.

| `FOnWebSocketConnected: TOnWebSocketConnected;`
This item has no description.

| `FOnWebSocketMessage: TOnWebSocketMessage;`
This item has no description.

### Methods

| `function GetInitialized: boolean;`
This item has no description.

| `function GetIsRunning: boolean;`
This item has no description.

| `function GetAddress: ustring;`
This item has no description.

| `function GetHasConnection: boolean;`
This item has no description.

| `procedure doOnServerCreated(const server: ICefServer); virtual;`
IServerEvents

| `procedure doOnServerDestroyed(const server: ICefServer); virtual;`
This item has no description.

| `procedure doOnClientConnected(const server: ICefServer; connection_id: Integer); virtual;`
This item has no description.

| `procedure doOnClientDisconnected(const server: ICefServer; connection_id: Integer); virtual;`
This item has no description.

| `procedure doOnHttpRequest(const server: ICefServer; connection_id: Integer; const client_address: ustring; const request: ICefRequest); virtual;`
This item has no description.

| `procedure doOnWebSocketRequest(const server: ICefServer; connection_id: Integer; const client_address: ustring; const request: ICefRequest; const callback: ICefCallback); virtual;`
This item has no description.

| `procedure doOnWebSocketConnected(const server: ICefServer; connection_id: Integer); virtual;`
This item has no description.

| `procedure doOnWebSocketMessage(const server: ICefServer; connection_id: Integer; const data: Pointer; data_size: NativeUInt); virtual;`
This item has no description.

| `procedure InitializeEvents;`
This item has no description.

| `constructor Create(AOwner: TComponent); override;`
This item has no description.

| `destructor Destroy; override;`
This item has no description.

| `procedure CreateServer(const address : ustring = DEFAULT_CEFSERVER_ADDRESS; port : uint16 = DEFAULT_CEFSERVER_PORT; backlog : Integer = DEFAULT_CEFSERVER_BACKLOG);`

Create a new server that binds to |address| and |port|. |address| must be a valid IPv4 or IPv6 address (e.g. 127.0.0.1 or ::1) and |port| must be a port number outside of the reserved range (e.g. between 1025 and 65535 on most platforms). |backlog| is the maximum number of pending connections. A new thread will be created for each CreateServer call (the "dedicated server thread"). It is therefore recommended to use a different ICefServerHandler instance for each CreateServer call to avoid thread safety issues in the ICefServerHandler implementation. The ICefServerHandler.OnServerCreated function will be called on the dedicated server thread to report success or failure. See ICefServerHandler.OnServerCreated documentation for a description of server lifespan.

| `procedure Shutdown;`
Stop the server and shut down the dedicated server thread. See ICefServerHandler.OnServerCreated documentation for a description of server lifespan.

| `function IsValidConnection(connection_id: Integer) : boolean;`
Returns true (1) if |connection_id| represents a valid connection. This function must be called on the dedicated server thread.

| `procedure SendHttp200response(connection_id: Integer; const content_type: ustring; const data: Pointer; data_size: NativeUInt);`
Send an HTTP 200 "OK" response to the connection identified by |connection_id|. |content_type| is the response content type (e.g. "text/html"), |data| is the response content, and |data_size| is the size of |data| in bytes. The contents of |data| will be copied. The connection will be closed automatically after the response is sent.

| `procedure SendHttp404response(connection_id: Integer);`
Send an HTTP 404 "Not Found" response to the connection identified by |connection_id|. The connection will be closed automatically after the response is sent.

| `procedure SendHttp500response(connection_id: Integer; const error_message: ustring);`
Send an HTTP 500 "Internal Server Error" response to the connection identified by |connection_id|. |error_message| is the associated error message. The connection will be closed automatically after the response is sent.

| `procedure SendHttpResponse(connection_id, response_code: Integer; const content_type: ustring; content_length: int64; const extra_headers: ICefStringMultimap);`

Send a custom HTTP response to the connection identified by |connection_id|. |response_code| is the HTTP response code sent in the status line (e.g. 200), |content_type| is the response content type sent as the "Content-Type" header (e.g. "text/html"), |content_length| is the expected content length, and |extra_headers| is the map of extra response headers. If |content_length| is >= 0 then the "Content-Length" header will be sent. If |content_length| is 0 then no content is expected and the connection will be closed automatically after the response is sent. If |content_length| is < 0 then no "Content-Length" header will be sent and the client will continue reading until the connection is closed. Use the SendRawData function to send the content, if applicable, and call CloseConnection after all content has been sent.

| `procedure SendRawData(connection_id: Integer; const data: Pointer; data_size: NativeUInt);`
Send raw data directly to the connection identified by |connection_id|. |data| is the raw data and |data_size| is the size of |data| in bytes. The contents of |data| will be copied. No validation of |data| is performed internally so the client should be careful to send the amount indicated by the "Content-Length" header, if specified. See SendHttpResponse documentation for intended usage.

| `procedure CloseConnection(connection_id: Integer);`
Close the connection identified by |connection_id|. See SendHttpResponse documentation for intended usage.

| `procedure SendWebSocketMessage(connection_id: Integer; const data: Pointer; data_size: NativeUInt);`
Send a WebSocket message to the connection identified by |connection_id|. |data| is the response content and |data_size| is the size of |data| in bytes. The contents of |data| will be copied. See ICefServerHandler.OnWebSocketRequest documentation for intended usage.

### Properties

| `property Initialized : boolean read GetInitialized;`
Returns true when the server and the handler are initialized.

| `property IsRunning : boolean read GetIsRunning;`
Returns true (1) if the server is currently running and accepting incoming connections. See ICefServerHandler.OnServerCreated documentation for a description of server lifespan. This function must be called on the dedicated server thread.

| `property Address : ustring read GetAddress;`
Returns the server address including the port number.

| `property HasConnection : boolean read GetHasConnection;`
Returns true (1) if the server currently has a connection. This function must be called on the dedicated server thread.

| `property OnServerCreated : TOnServerCreated read FOnServerCreated write FOnServerCreated;`

Called when |server| is created. If the server was started successfully then ICefServer.IsRunning will return true (1). The server will continue running until ICefServerShutdown is called, after which time OnServerDestroyed will be called. If the server failed to start then OnServerDestroyed will be called immediately after this function returns.

This event will be called on the CEF server thread.

<see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_server_capi.h">CEF source file: /include/capi/cef_server_capi.h (cef_server_handler_t))

| `property OnServerDestroyed : TOnServerDestroyed read FOnServerDestroyed write FOnServerDestroyed;`

Called when |server| is destroyed. The server thread will be stopped after this function returns. The client should release any references to |server| when this function is called. See OnServerCreated documentation for a description of server lifespan.

This event will be called on the CEF server thread.

<see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_server_capi.h">CEF source file: /include/capi/cef_server_capi.h (cef_server_handler_t))

| `property OnClientConnected : TOnClientConnected read FOnClientConnected write FOnClientConnected;`
Called when a client connects to |server|. |connection_id| uniquely identifies the connection. Each call to this function will have a matching call to OnClientDisconnected. This event will be called on the CEF server thread. <see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_server_capi.h">CEF source file: /include/capi/cef_server_capi.h (cef_server_handler_t))

| `property OnClientDisconnected : TOnClientDisconnected read FOnClientDisconnected write FOnClientDisconnected;`

Called when a client disconnects from |server|. |connection_id| uniquely identifies the connection. The client should release any data associated with |connection_id| when this function is called and |connection_id| should no longer be passed to ICefServer functions. Disconnects can originate from either the client or the server. For example, the server will disconnect automatically after a ICefServer.SendHttpXXXResponse function is called.

This event will be called on the CEF server thread.

<see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_server_capi.h">CEF source file: /include/capi/cef_server_capi.h (cef_server_handler_t))

| `property OnHttpRequest : TOnHttpRequest read FOnHttpRequest write FOnHttpRequest;`

Called when |server| receives an HTTP request. |connection_id| uniquely identifies the connection, |client_address| is the requesting IPv4 or IPv6 client address including port number, and |request| contains the request contents (URL, function, headers and optional POST data). Call ICefServer functions either synchronously or asynchronusly to send a response.

This event will be called on the CEF server thread.

<see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_server_capi.h">CEF source file: /include/capi/cef_server_capi.h (cef_server_handler_t))

| `property OnWebSocketRequest : TOnWebSocketRequest read FOnWebSocketRequest write FOnWebSocketRequest;`

Called when |server| receives a WebSocket request. |connection_id| uniquely identifies the connection, |client_address| is the requesting IPv4 or IPv6 client address including port number, and |request| contains the request contents (URL, function, headers and optional POST data). Execute |callback| either synchronously or asynchronously to accept or decline the WebSocket connection. If the request is accepted then OnWebSocketConnected will be called after the WebSocket has connected and incoming messages will be delivered to the OnWebSocketMessage callback. If the request is declined then the client will be disconnected and OnClientDisconnected will be called. Call the ICefServer.SendWebSocketMessage function after receiving the OnWebSocketConnected callback to respond with WebSocket messages.

This event will be called on the CEF server thread.

<see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_server_capi.h">CEF source file: /include/capi/cef_server_capi.h (cef_server_handler_t))

| `property OnWebSocketConnected : TOnWebSocketConnected read FOnWebSocketConnected write FOnWebSocketConnected;`

Called after the client has accepted the WebSocket connection for |server| and |connection_id| via the OnWebSocketRequest callback. See OnWebSocketRequest documentation for intended usage.

This event will be called on the CEF server thread.

<see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_server_capi.h">CEF source file: /include/capi/cef_server_capi.h (cef_server_handler_t))

| `property OnWebSocketMessage : TOnWebSocketMessage read FOnWebSocketMessage write FOnWebSocketMessage;`

Called when |server| receives an WebSocket message. |connection_id| uniquely identifies the connection, |data| is the message content and |data_size| is the size of |data| in bytes. Do not keep a reference to |data| outside of this function. See OnWebSocketRequest documentation for intended usage.

This event will be called on the CEF server thread.

<see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_server_capi.h">CEF source file: /include/capi/cef_server_capi.h (cef_server_handler_t))

Generated by PasDoc 0.17.0.snapshot.