> 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.unity/ks.reactor.client.unity.kswsconnection.md).

# Class ksWSConnection

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

Network stream connection using a KinematicSoup javascript websocket library.

```csharp
public class ksWSConnection : ksConnection
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) â† [ksConnection](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md) â† [ksWSConnection](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.kswsconnection.md)

#### Inherited Members

[ksConnection.OnDisconnect](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_OnDisconnect), [ksConnection.m\_host](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_m_host), [ksConnection.m\_port](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_m_port), [ksConnection.Address](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_Address), [ksConnection.ReadProgress](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_ReadProgress), [ksConnection.WriteProgress](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_WriteProgress), [ksConnection.IsConnected](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_IsConnected), [ksConnection.Connect(string, ushort, ksConnection.ConnectHandler, object)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_Connect_System_String_System_UInt16_KS_Reactor_Client_ksConnection_ConnectHandler_System_Object_), [ksConnection.Disconnect(bool)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_Disconnect_System_Boolean_), [ksConnection.Read(ksStreamBuffer.Segment, ksConnection.IOHandler, object)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_Read_KS_Reactor_ksStreamBuffer_Segment_KS_Reactor_Client_ksConnection_IOHandler_System_Object_), [ksConnection.Write(ksStreamBuffer.Segment, ksConnection.IOHandler, object)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_Write_KS_Reactor_ksStreamBuffer_Segment_KS_Reactor_Client_ksConnection_IOHandler_System_Object_), [ksConnection.TryResolveHost(string, out IPAddress)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_TryResolveHost_System_String_System_Net_IPAddress__), [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)

## Properties

### Config <a href="#ks_reactor_client_unity_kswsconnection_config" id="ks_reactor_client_unity_kswsconnection_config"></a>

```csharp
public static ksWSConnection.ConfigSettings Config { get; }
```

#### Property Value

[ksWSConnection](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.kswsconnection.md).[ConfigSettings](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.kswsconnection/ks.reactor.client.unity.kswsconnection.configsettings.md)

### IsConnected <a href="#ks_reactor_client_unity_kswsconnection_isconnected" id="ks_reactor_client_unity_kswsconnection_isconnected"></a>

Is there an open connection to a remote host.

```csharp
public override bool IsConnected { get; }
```

#### Property Value

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

### ReadProgress <a href="#ks_reactor_client_unity_kswsconnection_readprogress" id="ks_reactor_client_unity_kswsconnection_readprogress"></a>

Unused on Websocket connections.

```csharp
public override ksFrameInfo ReadProgress { get; }
```

#### Property Value

[ksFrameInfo](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksframeinfo.md)

### WriteProgress <a href="#ks_reactor_client_unity_kswsconnection_writeprogress" id="ks_reactor_client_unity_kswsconnection_writeprogress"></a>

Unused on Websocket connections.

```csharp
public override ksFrameInfo WriteProgress { get; }
```

#### Property Value

[ksFrameInfo](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksframeinfo.md)

## Methods

### Connect(string, ushort, ConnectHandler, object) <a href="#ks_reactor_client_unity_kswsconnection_connect_system_string_system_uint16_ks_reactor_client_ksconne" id="ks_reactor_client_unity_kswsconnection_connect_system_string_system_uint16_ks_reactor_client_ksconne"></a>

Begin connecting to a websocket server using the url wss\://host:port

```csharp
public override void Connect(string host, ushort port, ksConnection.ConnectHandler callback, object asyncState = null)
```

#### Parameters

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

Host name

`port` [ushort](https://learn.microsoft.com/dotnet/api/system.uint16)

Host port

`callback` [ksConnection](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md).[ConnectHandler](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection/ks.reactor.client.ksconnection.connecthandler.md)

Callback to invoke when a connection attempt completes.

`asyncState` [object](https://learn.microsoft.com/dotnet/api/system.object)

Aysnc state data.

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

Close an open network connection.

```csharp
public override void Disconnect(bool immediate)
```

#### Parameters

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

If false, then the connection will be closed after sending all queued messages.

### Read(Segment, IOHandler, object) <a href="#ks_reactor_client_unity_kswsconnection_read_ks_reactor_ksstreambuffer_segment_ks_reactor_client_ksco" id="ks_reactor_client_unity_kswsconnection_read_ks_reactor_ksstreambuffer_segment_ks_reactor_client_ksco"></a>

Read data from the WebSocket connection.

```csharp
public override void Read(ksStreamBuffer.Segment segment, ksConnection.IOHandler callback, object asyncState = null)
```

#### Parameters

`segment` [ksStreamBuffer](/reactor/api-reference/ks.reactor/ks.reactor.ksstreambuffer.md).[Segment](/reactor/api-reference/ks.reactor/ks.reactor.ksstreambuffer/ks.reactor.ksstreambuffer.segment.md)

[Segment](/reactor/api-reference/ks.reactor/ks.reactor.ksstreambuffer/ks.reactor.ksstreambuffer.segment.md) to receive data into.

`callback` [ksConnection](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md).[IOHandler](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection/ks.reactor.client.ksconnection.iohandler.md)

Callback to invoke when the read is complete.

`asyncState` [object](https://learn.microsoft.com/dotnet/api/system.object)

Aysnc state data.

### Register() <a href="#ks_reactor_client_unity_kswsconnection_register" id="ks_reactor_client_unity_kswsconnection_register"></a>

Registers a websocket factory for all [ksRoom](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksroom.md) connections.

```csharp
public static void Register()
```

### Write(Segment, IOHandler, object) <a href="#ks_reactor_client_unity_kswsconnection_write_ks_reactor_ksstreambuffer_segment_ks_reactor_client_ksc" id="ks_reactor_client_unity_kswsconnection_write_ks_reactor_ksstreambuffer_segment_ks_reactor_client_ksc"></a>

Write data to the websocket.

```csharp
public override void Write(ksStreamBuffer.Segment segment, ksConnection.IOHandler callback, object asyncState = null)
```

#### Parameters

`segment` [ksStreamBuffer](/reactor/api-reference/ks.reactor/ks.reactor.ksstreambuffer.md).[Segment](/reactor/api-reference/ks.reactor/ks.reactor.ksstreambuffer/ks.reactor.ksstreambuffer.segment.md)

[Segment](/reactor/api-reference/ks.reactor/ks.reactor.ksstreambuffer/ks.reactor.ksstreambuffer.segment.md) to write data from.

`callback` [ksConnection](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md).[IOHandler](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection/ks.reactor.client.ksconnection.iohandler.md)

Callback to invoke when the write is complete.

`asyncState` [object](https://learn.microsoft.com/dotnet/api/system.object)

Async state data.

### OnDisconnect <a href="#ks_reactor_client_unity_kswsconnection_ondisconnect" id="ks_reactor_client_unity_kswsconnection_ondisconnect"></a>

Disconnect event to invoke on a connection disconnect.

```csharp
public override event ksConnection.DisconnectHandler OnDisconnect
```

#### Event Type

[ksConnection](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md).[DisconnectHandler](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection/ks.reactor.client.ksconnection.disconnecthandler.md)
