mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-01 17:47:24 +02:00
49 lines
1.3 KiB
C#
49 lines
1.3 KiB
C#
using System;
|
|
using System.Net.WebSockets;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Robust.Shared.Log;
|
|
using Robust.Shared.Network;
|
|
using Robust.Shared.Network.Transfer;
|
|
|
|
namespace Robust.Client.Network.Transfer;
|
|
|
|
internal sealed class ClientTransferImplWebSocket : TransferImplWebSocket
|
|
{
|
|
private readonly (string EndpointUrl, byte[] Key) _info;
|
|
private readonly bool _slow;
|
|
|
|
public ClientTransferImplWebSocket(
|
|
(string EndpointUrl, byte[] Key) info,
|
|
ISawmill sawmill,
|
|
BaseTransferManager parent,
|
|
INetChannel channel,
|
|
bool slow)
|
|
: base(sawmill, parent, channel)
|
|
{
|
|
_info = info;
|
|
_slow = slow;
|
|
}
|
|
|
|
public override async Task ClientInit(CancellationToken cancel)
|
|
{
|
|
var clientWs = new ClientWebSocket();
|
|
clientWs.Options.SetRequestHeader(KeyHeaderName, Convert.ToBase64String(_info.Key));
|
|
clientWs.Options.SetRequestHeader(UserIdHeaderName, Channel.UserId.ToString());
|
|
|
|
if (_slow)
|
|
await Task.Delay(2000, cancel);
|
|
|
|
await clientWs.ConnectAsync(new Uri(_info.EndpointUrl), cancel);
|
|
|
|
WebSocket = clientWs;
|
|
|
|
ReadThread();
|
|
}
|
|
|
|
public override Task ServerInit()
|
|
{
|
|
throw new NotSupportedException();
|
|
}
|
|
}
|