> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/reactor/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksservice.md).

# Class ksService

Namespace: [KS.Reactor.Client](/reactor/api-reference/ks.reactor.client.md)\
Assembly: KSUnity.dll

Main entry point to connect to the service.

```csharp
public class ksService
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) â† [ksService](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksservice.md)

#### Inherited Members

[object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object\)), [object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object-system-object\)), [object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), [object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype), [object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone), [object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), [object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)

## Constructors

### ksService() <a href="#ks_reactor_client_ksservice__ctor" id="ks_reactor_client_ksservice__ctor"></a>

Constructor

```csharp
public ksService()
```

## Properties

### AppDataPath <a href="#ks_reactor_client_ksservice_appdatapath" id="ks_reactor_client_ksservice_appdatapath"></a>

Path to write app data to.

```csharp
public static string AppDataPath { get; set; }
```

#### Property Value

[string](https://learn.microsoft.com/dotnet/api/system.string)

### Coroutines <a href="#ks_reactor_client_ksservice_coroutines" id="ks_reactor_client_ksservice_coroutines"></a>

Coroutine manager

```csharp
public ksCoroutineManager Coroutines { get; }
```

#### Property Value

[ksCoroutineManager](/reactor/api-reference/ks.reactor/ks.reactor.kscoroutinemanager.md)

### InputManager <a href="#ks_reactor_client_ksservice_inputmanager" id="ks_reactor_client_ksservice_inputmanager"></a>

Input manager

```csharp
public ksIInputManager InputManager { get; set; }
```

#### Property Value

[ksIInputManager](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksiinputmanager.md)

### IsQuitting <a href="#ks_reactor_client_ksservice_isquitting" id="ks_reactor_client_ksservice_isquitting"></a>

Is the application quitting? Prevents new room connections when true.

```csharp
public bool IsQuitting { get; set; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### NetStats <a href="#ks_reactor_client_ksservice_netstats" id="ks_reactor_client_ksservice_netstats"></a>

Combined net statistics for all rooms.

```csharp
public ksNetStats NetStats { get; }
```

#### Property Value

[ksNetStats](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksnetstats.md)

### PlayerAPI <a href="#ks_reactor_client_ksservice_playerapi" id="ks_reactor_client_ksservice_playerapi"></a>

Player account API

```csharp
public ksPlayerAPI PlayerAPI { get; }
```

#### Property Value

[ksPlayerAPI](/reactor/api-reference/ks.reactor/ks.reactor.ksplayerapi.md)

### PlayerTimeAdjusterFactory <a href="#ks_reactor_client_ksservice_playertimeadjusterfactory" id="ks_reactor_client_ksservice_playertimeadjusterfactory"></a>

The factory for creating [ksITimeAdjuster](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksitimeadjuster.md)s for players who own entities with the transform permission. If null, a [ksTimeKeeper](/reactor/api-reference/ks.reactor.client/ks.reactor.client.kstimekeeper.md) will be created.

```csharp
public ksDelegates.TimeAdjusterFactory PlayerTimeAdjusterFactory { get; set; }
```

#### Property Value

[ksDelegates](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksdelegates.md).[TimeAdjusterFactory](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksdelegates/ks.reactor.client.ksdelegates.timeadjusterfactory.md)

### Rooms <a href="#ks_reactor_client_ksservice_rooms" id="ks_reactor_client_ksservice_rooms"></a>

List of rooms we are connected or connecting to.

```csharp
public ksConstList<ksBaseRoom> Rooms { get; }
```

#### Property Value

[ksConstList](/reactor/api-reference/ks.reactor/ks.reactor.ksconstlist-1.md)<[ksBaseRoom](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md)>

### WebRequestFactory <a href="#ks_reactor_client_ksservice_webrequestfactory" id="ks_reactor_client_ksservice_webrequestfactory"></a>

Factory for providing custom [ksIWebRequest](/reactor/api-reference/ks.reactor/ks.reactor.ksiwebrequest.md) implementations.

```csharp
public ksIWebRequestFactory WebRequestFactory { set; }
```

#### Property Value

[ksIWebRequestFactory](/reactor/api-reference/ks.reactor/ks.reactor.ksiwebrequestfactory.md)

## Methods

### Disconnect(bool) <a href="#ks_reactor_client_ksservice_disconnect_system_boolean" id="ks_reactor_client_ksservice_disconnect_system_boolean"></a>

Disconnects from all rooms.

```csharp
public void Disconnect(bool immediate = false)
```

#### Parameters

`immediate` [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

if false, waits for pending writes before disconnecting.

### GetServers(string, string, RoomListCallback) <a href="#ks_reactor_client_ksservice_getservers_system_string_system_string_ks_reactor_client_ksservice_rooml" id="ks_reactor_client_ksservice_getservers_system_string_system_string_ks_reactor_client_ksservice_rooml"></a>

Request a list of running server instances

```csharp
public void GetServers(string url, string binding, ksService.RoomListCallback callback)
```

#### Parameters

`url` [string](https://learn.microsoft.com/dotnet/api/system.string)

url

`binding` [string](https://learn.microsoft.com/dotnet/api/system.string)

image binding

`callback` [ksService](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksservice.md).[RoomListCallback](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksservice/ks.reactor.client.ksservice.roomlistcallback.md)

callback

### JoinRoom(ksBaseRoom, Session, params ksMultiType\[]) <a href="#ks_reactor_client_ksservice_joinroom_ks_reactor_client_ksbaseroom_ks_reactor_ksplayerapi_session_ks" id="ks_reactor_client_ksservice_joinroom_ks_reactor_client_ksbaseroom_ks_reactor_ksplayerapi_session_ks"></a>

Connects to a room.

```csharp
public bool JoinRoom(ksBaseRoom room, ksPlayerAPI.Session session, params ksMultiType[] authArgs)
```

#### Parameters

`room` [ksBaseRoom](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md)

room to join.

`session` [ksPlayerAPI](/reactor/api-reference/ks.reactor/ks.reactor.ksplayerapi.md).[Session](/reactor/api-reference/ks.reactor/ks.reactor.ksplayerapi/ks.reactor.ksplayerapi.session.md)

player session credentials.

`authArgs` [ksMultiType](/reactor/api-reference/ks.reactor/ks.reactor.ksmultitype.md)\[]

authentication arguments

#### Returns

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

false if a connection attempt was not made because of invalid parameters or because we're already connected or connecting to the room.

### LeaveRoom(ksBaseRoom, bool) <a href="#ks_reactor_client_ksservice_leaveroom_ks_reactor_client_ksbaseroom_system_boolean" id="ks_reactor_client_ksservice_leaveroom_ks_reactor_client_ksbaseroom_system_boolean"></a>

Disconnects from a room.

```csharp
public void LeaveRoom(ksBaseRoom room, bool immediate = false)
```

#### Parameters

`room` [ksBaseRoom](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md)

room to leave.

`immediate` [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

if false, waits for pending writes before disconnecting.

### PostUpdate() <a href="#ks_reactor_client_ksservice_postupdate" id="ks_reactor_client_ksservice_postupdate"></a>

Called every frame after scripts are updated. Calls [PostUpdate](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_PostUpdate) on the rooms.

```csharp
public void PostUpdate()
```

### Update(float, float) <a href="#ks_reactor_client_ksservice_update_system_single_system_single" id="ks_reactor_client_ksservice_update_system_single_system_single"></a>

Called each frame.

```csharp
public void Update(float unscaledDeltaTime, float realDeltaTime = -1)
```

#### Parameters

`unscaledDeltaTime` [float](https://learn.microsoft.com/dotnet/api/system.single)

simulated time in seconds since the last update, unscaled by time scaling.

`realDeltaTime` [float](https://learn.microsoft.com/dotnet/api/system.single)

real time in seconds since the last update. If less than zero, will be calculated.
