gpt4 book ai didi

c# - 如何确定信号 R 使用的传输方法

转载 作者:行者123 更新时间:2023-11-30 16:59:38 26 4
gpt4 key购买 nike

我正在编写一个带有 signal r 服务器和 Web 客户端的测试应用程序,我想知道是否有一种方法可以确定或让服务器知道客户端正在与服务器建立哪种传输方法。

关于在客户端和服务器之间具有持久双向连接的 websockets 或持续轮询服务器直到服务器响应然后关闭连接的长轮询,是否有任何我必须注意的缺点关于传输方法不是持久双向连接之外的网络套接字,特别是如果将要一个接一个地发出许多长时间运行的请求?

我注意到从客户端发出的多个请求将由集线器处理并在完成后返回,例如我发送一个请求等待 10 秒,然后发送另一个请求等待 1 秒。集线器将首先响应 1 秒等待请求,然后是 10 秒延迟,我很好奇每个创建的请求是否有一个线程通过相同的持久双工连接附加到客户端。

这是我的示例代码。

class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
public class RunningHub : Hub
{
public void SendLongRunning(string name, string waitFor)
{
Clients.All.addMessage(name, "just requested a long running request I'll get back to you when im done");

LongRunning(waitFor);

Clients.All.addMessage(name, "I'm done with the long running request. which took " + waitFor + " ms");
}

private void LongRunning(string waitFor)
{
int waitTime = int.Parse(waitFor);
Thread.Sleep(waitTime);
}
}

JQuery 示例。

 $(function () {
//Set the hubs URL for the connection
$.connection.hub.url = "http://localhost:9090/signalr";

// Declare a proxy to reference the hub.
var signalHub = $.connection.runningHub;
$('#url').append('<strong> Working With Port: ' + $.connection.hub.url + '</strong>');

// Create a function that the hub can call to broadcast messages.
signalHub.client.addMessage = function (name, message) {
//handles the response the message here
};

// Start the connection.
$.connection.hub.start().done(function () {
$('#sendlongrequest').click(function() {
signalHub.server.sendLongRunning($('#displayname').val(), $('#waitTime').val());
});
});
});

最佳答案

对于 ASP.NET 核心;

var transportType = Context.Features.Get<IHttpTransportFeature>()?.TransportType;

关于c# - 如何确定信号 R 使用的传输方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23551402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com