Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Gary Woodfine
committed
Sep 10, 2023
1 parent
522b4ca
commit 0033b2b
Showing
19 changed files
with
68 additions
and
73 deletions.
There are no files selected for viewing
61 changes: 61 additions & 0 deletions
61
how-to-create-websocket-server-dotnet/src/api/Activities/Sockets/SampleSocket/Get.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
using System.Net; | ||
using System.Net.WebSockets; | ||
using System.Text; | ||
using Ardalis.ApiEndpoints; | ||
using Microsoft.AspNetCore.Mvc; | ||
using Swashbuckle.AspNetCore.Annotations; | ||
|
||
namespace Api.Activities.Sockets.Queries.SampleSocket; | ||
|
||
[Route("ws")] | ||
public class WebSocketQuery : EndpointBaseAsync.WithoutRequest.WithoutResult | ||
{ | ||
private readonly ILogger<WebSocketQuery> _logger; | ||
public WebSocketQuery(ILogger<WebSocketQuery> logger) | ||
{ | ||
_logger = logger; | ||
} | ||
|
||
[HttpGet] | ||
[SwaggerOperation( | ||
Summary = "Web Socket Upgrade Request to initiate a Web Socket Session", | ||
Description = "Web Socket Upgrade Request to initiate a Web Socket Session", | ||
OperationId = "1318F7F5-4FE0-4315-BBF3-0DD1A9CABB5C", | ||
Tags = new[] { Routes.Sockets}) | ||
] | ||
[ProducesErrorResponseType(typeof(BadRequestObjectResult))] | ||
public override async Task HandleAsync(CancellationToken cancellationToken = new CancellationToken()) | ||
{ | ||
//let ws = new WebSocket('wss://localhost:5001/ws'); | ||
if (HttpContext.WebSockets.IsWebSocketRequest) | ||
{ | ||
using var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync(); | ||
_logger.Log(LogLevel.Information, "WebSocket connection established"); | ||
await Echo(webSocket); | ||
} | ||
else | ||
{ | ||
HttpContext.Response.StatusCode = (int) HttpStatusCode.BadRequest; | ||
} | ||
} | ||
private async Task Echo(WebSocket webSocket) | ||
{ | ||
var buffer = new byte[1024 * 4]; | ||
var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None); | ||
_logger.Log(LogLevel.Information, "Message received from Client"); | ||
|
||
while (!result.CloseStatus.HasValue) | ||
{ | ||
var serverMsg = Encoding.UTF8.GetBytes($"Client Message: {Encoding.UTF8.GetString(buffer)}"); | ||
await webSocket.SendAsync(new ArraySegment<byte>(serverMsg, 0, serverMsg.Length), result.MessageType, result.EndOfMessage, CancellationToken.None); | ||
_logger.Log(LogLevel.Information, "Message sent to Client"); | ||
|
||
buffer = new byte[1024 * 4]; | ||
result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None); | ||
_logger.Log(LogLevel.Information, "Message received from Client"); | ||
} | ||
|
||
await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None); | ||
_logger.Log(LogLevel.Information, "WebSocket connection closed"); | ||
} | ||
} |
66 changes: 0 additions & 66 deletions
66
...to-create-websocket-server-dotnet/src/api/Activities/Sockets/SampleSocket/SampleSocket.cs
This file was deleted.
Oops, something went wrong.
Binary file modified
BIN
-104 KB
(41%)
how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/ApiSocket
Binary file not shown.
Binary file modified
BIN
+512 Bytes
(100%)
how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/ApiSocket.dll
Binary file not shown.
Binary file modified
BIN
+48 Bytes
(100%)
how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/ApiSocket.pdb
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file modified
BIN
-3.11 KB
(92%)
how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.assets.cache
Binary file not shown.
Binary file modified
BIN
+135 KB
(840%)
...websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.csproj.AssemblyReference.cache
Binary file not shown.
2 changes: 1 addition & 1 deletion
2
...websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.csproj.CoreCompileInputs.cache
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
793077b769a957ea5127b9b4796caa63e043e35c | ||
1077babeac3216bfae1d36bafec1a8348da6b8cf |
Binary file modified
BIN
+512 Bytes
(100%)
how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.dll
Binary file not shown.
Binary file modified
BIN
+48 Bytes
(100%)
how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.pdb
Binary file not shown.
Binary file modified
BIN
-104 KB
(41%)
how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/apphost
Binary file not shown.
Binary file modified
BIN
+512 Bytes
(100%)
how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ref/ApiSocket.dll
Binary file not shown.
Binary file modified
BIN
+512 Bytes
(100%)
how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/refint/ApiSocket.dll
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
how-to-create-websocket-server-dotnet/src/api/obj/project.nuget.cache
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
how-to-create-websocket-server-dotnet/src/api/obj/project.packagespec.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
"restore":{"projectUniqueName":"/home/gary/Documents/garywoodfine/blog-tutorials/how-to-create-websocket-server-dotnet/src/api/ApiSocket.csproj","projectName":"ApiSocket","projectPath":"/home/gary/Documents/garywoodfine/blog-tutorials/how-to-create-websocket-server-dotnet/src/api/ApiSocket.csproj","outputPath":"/home/gary/Documents/garywoodfine/blog-tutorials/how-to-create-websocket-server-dotnet/src/api/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net7.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net7.0":{"targetAlias":"net7.0","projectReferences":{}}},"warningProperties":{"allWarningsAsErrors":true,"warnAsError":["NU1605"]}}"frameworks":{"net7.0":{"targetAlias":"net7.0","dependencies":{"Ardalis.ApiEndpoints":{"target":"Package","version":"[4.1.0, )"},"AutoMapper":{"target":"Package","version":"[12.0.1, )"},"AutoMapper.Extensions.Microsoft.DependencyInjection":{"target":"Package","version":"[12.0.1, )"},"FluentValidation":{"target":"Package","version":"[11.7.1, )"},"FluentValidation.AspNetCore":{"target":"Package","version":"[11.3.0, )"},"FluentValidation.DependencyInjectionExtensions":{"target":"Package","version":"[11.7.1, )"},"MediatR":{"target":"Package","version":"[12.1.1, )"},"Microsoft.AspNetCore.JsonPatch":{"target":"Package","version":"[7.0.5, )"},"Microsoft.AspNetCore.Mvc.NewtonsoftJson":{"target":"Package","version":"[7.0.5, )"},"Microsoft.AspNetCore.SignalR.Common":{"target":"Package","version":"[7.0.10, )"},"Microsoft.EntityFrameworkCore.Design":{"target":"Package","version":"[7.0.10, )"},"Npgsql":{"target":"Package","version":"[7.0.4, )"},"Npgsql.EntityFrameworkCore.PostgreSQL":{"target":"Package","version":"[7.0.4, )"},"Serilog":{"target":"Package","version":"[3.0.1, )"},"Serilog.AspNetCore":{"target":"Package","version":"[7.0.0, )"},"Serilog.Exceptions":{"target":"Package","version":"[8.4.0, )"},"Serilog.Settings.Configuration":{"target":"Package","version":"[7.0.1, )"},"Serilog.Sinks.Seq":{"target":"Package","version":"[5.2.2, )"},"Swashbuckle.AspNetCore":{"target":"Package","version":"[6.5.0, )"},"Swashbuckle.AspNetCore.Annotations":{"target":"Package","version":"[6.5.0, )"},"Threenine.ApiResponse":{"target":"Package","version":"[1.0.26, )"},"Threenine.Data":{"target":"Package","version":"[5.0.0, )"},"Threenine.DataService":{"target":"Package","version":"[0.2.1, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/home/gary/.dotnet/sdk/7.0.400/RuntimeIdentifierGraph.json"}} | ||
"restore":{"projectUniqueName":"/home/gary/Documents/garywoodfine/blog-tutorials/how-to-create-websocket-server-dotnet/src/api/ApiSocket.csproj","projectName":"ApiSocket","projectPath":"/home/gary/Documents/garywoodfine/blog-tutorials/how-to-create-websocket-server-dotnet/src/api/ApiSocket.csproj","outputPath":"/home/gary/Documents/garywoodfine/blog-tutorials/how-to-create-websocket-server-dotnet/src/api/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net7.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net7.0":{"targetAlias":"net7.0","projectReferences":{}}},"warningProperties":{"allWarningsAsErrors":true,"warnAsError":["NU1605"]}}"frameworks":{"net7.0":{"targetAlias":"net7.0","dependencies":{"Ardalis.ApiEndpoints":{"target":"Package","version":"[4.1.0, )"},"AutoMapper":{"target":"Package","version":"[12.0.1, )"},"AutoMapper.Extensions.Microsoft.DependencyInjection":{"target":"Package","version":"[12.0.1, )"},"FluentValidation":{"target":"Package","version":"[11.7.1, )"},"FluentValidation.AspNetCore":{"target":"Package","version":"[11.3.0, )"},"FluentValidation.DependencyInjectionExtensions":{"target":"Package","version":"[11.7.1, )"},"MediatR":{"target":"Package","version":"[12.1.1, )"},"Microsoft.AspNetCore.JsonPatch":{"target":"Package","version":"[7.0.5, )"},"Microsoft.AspNetCore.Mvc.NewtonsoftJson":{"target":"Package","version":"[7.0.5, )"},"Microsoft.AspNetCore.SignalR.Common":{"target":"Package","version":"[7.0.10, )"},"Microsoft.EntityFrameworkCore.Design":{"target":"Package","version":"[7.0.10, )"},"Npgsql":{"target":"Package","version":"[7.0.4, )"},"Npgsql.EntityFrameworkCore.PostgreSQL":{"target":"Package","version":"[7.0.4, )"},"Serilog":{"target":"Package","version":"[3.0.1, )"},"Serilog.AspNetCore":{"target":"Package","version":"[7.0.0, )"},"Serilog.Exceptions":{"target":"Package","version":"[8.4.0, )"},"Serilog.Settings.Configuration":{"target":"Package","version":"[7.0.1, )"},"Serilog.Sinks.Seq":{"target":"Package","version":"[5.2.2, )"},"Swashbuckle.AspNetCore":{"target":"Package","version":"[6.5.0, )"},"Swashbuckle.AspNetCore.Annotations":{"target":"Package","version":"[6.5.0, )"},"Threenine.ApiResponse":{"target":"Package","version":"[1.0.26, )"},"Threenine.Data":{"target":"Package","version":"[5.0.0, )"},"Threenine.DataService":{"target":"Package","version":"[0.2.1, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/lib/dotnet/sdk/7.0.110/RuntimeIdentifierGraph.json"}} |
2 changes: 1 addition & 1 deletion
2
how-to-create-websocket-server-dotnet/src/api/obj/rider.project.model.nuget.info
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
16941281348651623 | ||
16942852800447090 |
2 changes: 1 addition & 1 deletion
2
how-to-create-websocket-server-dotnet/src/api/obj/rider.project.restore.info
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
16942846172925585 | ||
16942852800447090 |