Корректная работа с сокетом

revision
vlad zverzhkhovskiy 2025-08-07 10:14:18 +03:00
parent 1f987c6982
commit 0c59ba8d64
3 changed files with 7 additions and 13 deletions

View File

@ -1,7 +1,6 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Sphagnum.Client; using Sphagnum.Client;
using Sphagnum.Common.Messaging.Contracts; using Sphagnum.Common.Messaging.Contracts;
using Sphagnum.Common.Messaging.Contracts.Messages;
namespace Sphagnum.DebugClient.Controllers namespace Sphagnum.DebugClient.Controllers
{ {

View File

@ -7,6 +7,7 @@ namespace Sphagnum.Server.Broker.Services
{ {
public class ConnectionsReciever : IHostedService public class ConnectionsReciever : IHostedService
{ {
private readonly int _port;
private readonly CancellationTokenSource _cts = new(); private readonly CancellationTokenSource _cts = new();
private Task _acceptationTask; private Task _acceptationTask;
private readonly IConnection _connection; private readonly IConnection _connection;
@ -14,10 +15,9 @@ namespace Sphagnum.Server.Broker.Services
private readonly MessagesProcessor _processor; private readonly MessagesProcessor _processor;
public ConnectionsReciever(ConnectionFactory connectionFactory, ConnectionsManager manager, MessagesProcessor processor) public ConnectionsReciever(ConnectionFactory connectionFactory, ConnectionsManager manager, MessagesProcessor processor)
{ {
_port = connectionFactory.Port;
_manager = manager; _manager = manager;
_connection = connectionFactory.CreateConnection(false).Result; _connection = connectionFactory.CreateConnection(false).Result;
_connection.Listen(connectionFactory.Port);
_acceptationTask = AcceptationWorker();
_processor = processor; _processor = processor;
} }
@ -41,8 +41,9 @@ namespace Sphagnum.Server.Broker.Services
public Task StartAsync(CancellationToken cancellationToken) public Task StartAsync(CancellationToken cancellationToken)
{ {
_connection.Bind(new IPEndPoint(IPAddress.Any, _port));
_connection?.Listen(1000); //todo разобраться что делает этот параметр. _connection?.Listen(1000); //todo разобраться что делает этот параметр.
//_acceptationTask = AcceptationWorker(_cts.Token); _acceptationTask = AcceptationWorker();
return Task.CompletedTask; return Task.CompletedTask;
} }

View File

@ -1,13 +1,7 @@
using Sphagnum.Common.Infrastructure.Contracts; using Sphagnum.Common.Infrastructure.Contracts;
using Sphagnum.Common.Messaging.Contracts.Messages;
using Sphagnum.Common.Messaging.Utils;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sphagnum.Common.Messaging.Extensions; using Sphagnum.Common.Messaging.Extensions;
using Sphagnum.Common.Messaging.Utils;
using System.Collections.Concurrent;
namespace Sphagnum.Server.Broker.Services namespace Sphagnum.Server.Broker.Services
{ {
@ -24,7 +18,7 @@ namespace Sphagnum.Server.Broker.Services
} }
internal static async Task ProcessMessages(IConnection connection) internal static async Task ProcessMessages(IConnection connection)
{ {
while (!connection.CancellationTokenSource.IsCancellationRequested) while (!connection.CancellationTokenSource.IsCancellationRequested)
{ {
var data = await connection.ReceiveAsync(connection.CancellationTokenSource.Token); var data = await connection.ReceiveAsync(connection.CancellationTokenSource.Token);