Rebex WebSocket

WebSocket library for modern and legacy platforms

Download 30-day free trial Buy from $349
More .NET libraries

Back to feature list...

Easy-to-use WebSocket client

Simple API 

Rebex WebSocket features a simple API that is suitable for most use cases:

// create an instance of WebSocket client
var client = new WebSocketClient();

// connect to a server
client.Connect("ws://echo.example.org");

// send a text message
client.Send("Hello!");

// receive a text message
string response = client.Receive<string>();

// send a binary message
byte[] data = { 1, 2, 3, 4, 5, 6, 7 };
client.Send(data);

// receive a binary message
byte[] reply = client.Receive<byte[]>();

// close the WebSocket
client.Close();
' create an instance of WebSocket client
Dim client As New WebSocketClient()

' connect to a server
client.Connect("ws://echo.example.org")

' send a text message
client.Send("Hello!")

' receive a text message
Dim response As String = client.Receive(Of String)()

' send a binary message
Dim data As Byte() = {1, 2, 3, 4, 5, 6, 7}
client.Send(Data)

' receive a binary message
Dim reply As Byte() = client.Receive(Of Byte())()

' close the WebSocket
client.Close()
Tip: In addition to string, the Send/Receive methods support a byte array type (byte[]). The Receive method also supports the object type, returning either a string or a byte array, depending on the message type received from the server.
Tip: WebSocketClient also supports a Task-based asynchronous variant of this API.

Classic .NET-like API 

Rebex WebSocket also features an asynchronous API that mimics .NET's ClientWebSocket API:

// connect to a server
await client.ConnectAsync("ws://echo.example.org", CancellationToken.None);

// send a message
byte[] message = Encoding.UTF8.GetBytes("Hello!");
await client.SendAsync(new ArraySegment<byte>(message), WebSocketMessageType.Text, true, CancellationToken.None);
' connect to a server
Await client.ConnectAsync("ws://echo.example.org", CancellationToken.None)

' send a message
Dim message As Byte() = Encoding.UTF8.GetBytes("Hello!")
Await client.SendAsync(New ArraySegment(Of Byte)(message), WebSocketMessageType.Text, True, CancellationToken.None)
Tip: WebSocketClient also supports a synchronous variant of this API.

Options and settings 

Use Options property to configure the WebSocketClient instance before connecting to the server:

// specify a subprotocol
client.Options.AddSubProtocol("plus@sftp.ws");

// specify credentials
client.Options.Credentials = new NetworkCredential("username", "password");

// set request header
client.Options.SetRequestHeader("X-Custom-Token", "1234567");

// set keep-alive interval to once-per-minute
client.Options.KeepAliveInterval = new TimeSpan(0, 1, 0);

// connect to a server
client.Connect(uri);
' specify a subprotocol
client.Options.AddSubProtocol("plus@sftp.ws")

' specify credentials
client.Options.Credentials = New NetworkCredential("username", "password")

' set request header
client.Options.SetRequestHeader("X-Custom-Token", "1234567")

' set keep-alive interval to once-per-minute
client.Options.KeepAliveInterval = New TimeSpan(0, 1, 0)

' connect to a server
client.Connect(uri)
Check out TLS/SSL core for an overview of TLS/SSL options.

Back to feature list...