服务器发送二进制文件大小,如何从dotnet核心服务器向SignalR客户端发送二进制文件...

我们有一个使用.Net向SignalR客户端发送文件的解决方案我们现在已移至 .Net Core 在以前的.net解决方案中,我们通过 GlobalHost.ConnectionManager 使用Hub上下文

var myHub = GlobalHost.ConnectionManager.GetHubContext();

myHub.Clients.Client(connectionId).doStuffWithFile(fileByteArray, fileName);

在客户端,使用两个参数触发函数 doStuffWithFile .

在 new .Net Core 解决方案中,我通过从Hub派生来创建Hub类 . 我添加了一种发送方法,将文件发送到特定客户端,而不是将其广播到每个客户端

public class MyHub : Hub

{

private static string _connectionId;

public override Task OnConnectedAsync()

{

_connectionId = Context.ConnectionId;

return Task.CompletedTask;

}

public override Task OnDisconnectedAsync(Exception exception)

{

_connectionId = Context.ConnectionId;

remove Connection Id

return base.OnDisconnectedAsync(exception);

}

public async Task Send(byte[] fileByteArray, string fileName)

{

await Clients.Client(_connectionId).InvokeAsync("doStuff", fileByteArray, fileName);

}

}

但是,我没有.Net核心中的任何机制,如GlobalHost或ConnectionManager来获取HubContext来发送文件 .

在客户端:

static void Main(string[] args)

{

var connection = new HubConnectionBuilder()

.WithUrl("http://localhost:25786/file")

.WithConsoleLogger()

.Build();

connection.On("doStuff", DoStuff);

connection.StartAsync().ContinueWith(

task =>

{

if (task.IsFaulted)

{

Console.WriteLine("Connection faulty");

}

});

Console.ReadLine();

}

private static void DoStuff(byte[] data, string name)

{

File.WriteAllBytes(@"c:\Projects\" + name, data);

}

我试图创建一个新的MyHub实例来调用Send方法,但它只是不起作用 . 你能告诉我怎么做吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值