Skip to content

Stream interface implemented on top of System.Net.WebSockets

Notifications You must be signed in to change notification settings

kapetan/WebSocketStream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebSocketStream

Stream interface implemented on top of System.Net.WebSockets.

dotnet add package WebSocketStream

Usage

Client example.

using WSStream;

WebSocketStream socket = WebSocketStream.Connect("ws://localhost:8080");
await socket.WriteAsync(new byte[] { 100, 101 }, 0, 2);

byte[] buffer = new buffer[1024];
int read = await socket.ReadAsync(buffer, 0, buffer.Length);
await socket.CloseAsync();

The server uses a HttpListener under the hood for listening to incoming requests.

using WSStream;

WebSocketListener server = new WebSocketListener(8080);
WebSocketStream socket = await server.AcceptWebSocketAsync();

byte[] buffer = new byte[1024];
int read = await socket.ReadAsync(buffer, 0, buffer.Length);
await socket.WriteAsync(buffer, 0, read);
await socket.CloseAsync();

Since System.Net.WebSockets does not provide synchronous methods for reading and writing to a WebSocket, the stream implementation uses the asynchronous equivalents in Read(buffer, offset, count) and Write(buffer, offset, count) and blocks the thread by calling GetAwaiter().GetResult().

About

Stream interface implemented on top of System.Net.WebSockets

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages