NETWORK API

The Microsoft Flight Simulator Networking API exposes a number of functions that permit you to make HTTP requests using WASM.

 

There are two principle ways to use this API:

  • Loop: This means that you will be in charge of checking the status of all your requests each frame using a loop. When using loops, keep in mind that once the request is done, data, errorCode, headers, etc... will only be available for one single frame. If you miss this frame, then there is nothing you can do. It is also worth noting that you cannot make this synchronous, as it won't work and it will lead to an infinite loop.
  • Callback: This means that Microsoft Flight Simulator will take the responsibility for checking the status and making the given callback once the request is done (whether it's a success or a fail).

It is important to note that there is a limited amount of WASM requests that can be processed at the same time (for now it is limited to 3). Also keep in mind that those handles are shared by every WASM module running at the same time, meaning that you have to think ahead and be careful to not make too many requests.

 

Finally, note that only https requests are permitted by the API.

 

You can find a sample project to use as a reference when using the Network API here:

 

 

Typedefs

When using the functions listed below, you'll need to also have the following type definitions, as they will be used as return values or to create callbacks by many of the functions. These typedefs are:

 

FsNetworkRequestId

This is used as the return holding a request ID by many functions:

typedef long long FsNetworkRequestId;

 

HttpRequestCallback

This is used when a function requires a callback:

typedef void (*HttpRequestCallback)(FsNetworkRequestId requestId, int errorCode, void* userData);

 

 

Functions

The functions available with the Network API are:

Function Description
fsNetworkHttpCancelRequest Cancel a request made earlier whatever its state
fsNetworkHttpRequestGet Create a GET request which will be executed
fsNetworkHttpRequestGetData Get the data returned by the request
fsNetworkHttpRequestGetDataSize Get the data size returned by the request
fsNetworkHttpRequestGetErrorCode Get the request’s error code
fsNetworkHttpRequestGetHeaderSection Get the value of a specific header
fsNetworkHttpRequestGetState Get the current status of a request
fsNetworkHttpRequestPOST Create a POST request which will be executed
fsNetworkHttpRequestPut Create a PUT request which will be executed

 

 

Enums/Structs

The enums and structs available for use with the Network API are:

Function Description Type
FsNetworkHttpRequestParam A structure which can/must be used while doing a request to customize the request. Struct
FsNetworkHttpRequestState The current state of a request. Enum