mirror of
https://gitlab.com/futo-org/fcast.git
synced 2025-08-11 18:12:49 +00:00
Added dotnet FCast client.
This commit is contained in:
parent
f0fa5c067f
commit
c4e9303cc3
8 changed files with 1191 additions and 0 deletions
46
clients/terminal-dotnet/FCastClient.Cli/WebSocketStream.cs
Normal file
46
clients/terminal-dotnet/FCastClient.Cli/WebSocketStream.cs
Normal file
|
@ -0,0 +1,46 @@
|
|||
using System.Net.WebSockets;
|
||||
|
||||
public class WebSocketStream : Stream
|
||||
{
|
||||
private readonly ClientWebSocket _webSocket;
|
||||
|
||||
public WebSocketStream(ClientWebSocket webSocket)
|
||||
{
|
||||
_webSocket = webSocket;
|
||||
}
|
||||
|
||||
public override bool CanRead => true;
|
||||
public override bool CanSeek => false;
|
||||
public override bool CanWrite => true;
|
||||
public override long Length => throw new NotSupportedException();
|
||||
public override long Position
|
||||
{
|
||||
get => throw new NotSupportedException();
|
||||
set => throw new NotSupportedException();
|
||||
}
|
||||
|
||||
public override void Flush() { }
|
||||
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
{
|
||||
var segment = new ArraySegment<byte>(buffer, offset, count);
|
||||
var result = _webSocket.ReceiveAsync(segment, CancellationToken.None).Result;
|
||||
return result.Count;
|
||||
}
|
||||
|
||||
public override void Write(byte[] buffer, int offset, int count)
|
||||
{
|
||||
var segment = new ArraySegment<byte>(buffer, offset, count);
|
||||
_webSocket.SendAsync(segment, WebSocketMessageType.Binary, true, CancellationToken.None).Wait();
|
||||
}
|
||||
|
||||
public override long Seek(long offset, SeekOrigin origin)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
public override void SetLength(long value)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue