Revision Difference
Get_Server_List#523915
<cat>code.servers</cat>⤶
<title>Get Server List</title>⤶
⤶
⤶
# Creating The Request⤶
⤶
⤶
First step is to create the request. You have a few different options, but here's how to create an Internet request.⤶
⤶
```⤶
Request = new Steamworks.ServerList.Internet();⤶
```⤶
⤶
# Filters⤶
⤶
You can optionally add filters to avoid showing servers you don't want to show.⤶
⤶
```⤶
// Show only secure servers⤶
Request.AddFilter( "secure", "1" );⤶
⤶
// AND with the next 1 rule (if not it'll OR)⤶
Request.AddFilter( "and", "1" );⤶
⤶
// Show only servers that are the same version⤶
Request.AddFilter( "gametype", GameVersionString );⤶
⤶
```⤶
⤶
⤶
# Set up a callback⤶
⤶
Set up a function to be called when new servers are found. This won't be called for every server, but it might be called every frame.⤶
⤶
```⤶
Request.OnChanges += OnServersUpdated;⤶
```⤶
⤶
⤶
⤶
# Run the request⤶
⤶
You can start the request. You don't have to await this function. It takes a timeout, in seconds, where it'll stop updating.⤶
⤶
```⤶
Request.RunQueryAsync( 30 );⤶
```⤶
⤶
⤶
# Server Responded⤶
⤶
⤶
Your callback function will get called when new servers are found.⤶
⤶
```⤶
void OnServersUpdated()⤶
{⤶
// No reponsive servers yet, bail⤶
if ( Request.Responsive.Count == 0 )⤶
return;⤶
⤶
// Process each responsive server⤶
foreach ( var s in Request.Responsive )⤶
{⤶
ServerResponded( s );⤶
}⤶
⤶
// Clear the responsive server list so we don't⤶
// reprocess them on the next call.⤶
Request.Responsive.Clear();⤶
}⤶
⤶
⤶
void ServerResponded( ServerInfo server )⤶
{⤶
// Do whatever you want with the server information⤶
⤶
Log( $"{server.Name} Responded!" );⤶
}⤶
⤶
```⤶
⤶
⤶
# Cancelling⤶
⤶
If you want a Stop button on or a Refresh button, you should stop the request. ⤶
⤶
```⤶
if ( Request != null )⤶
{⤶
Request.Dispose();⤶
Request = null;⤶
}⤶
```⤶