在不等待200消息的情况下从服务器获取即时响应

本文关键字:获取 服务器 响应 情况下 等待 消息 | 更新日期: 2023-09-27 18:27:23

是否可以立即向客户端发送响应(200),并在响应发送到客户端后处理请求?

示例:如果我向一个页面发送请求,需要2分钟才能做出响应。我不想等待2分钟才能得到响应(因为我不需要来自服务器的任何响应),所以我希望服务器立即做出响应。我不担心这个过程是否会在发送响应后完成。

有人有实施这个过程的想法吗?

谢谢。

在不等待200消息的情况下从服务器获取即时响应

听起来您为web编写的服务应该使用离线流程。Web通信是同步工作的,因此您不希望客户端在服务器忙于处理请求时挂起。我建议在你的网络服务器上运行一个单独的服务,你可以将进程卸载到它

  1. 客户端向服务器发送请求
  2. 服务器接受客户端数据
  3. 服务器将请求数据插入数据库
    a.Windows服务监视数据库请求队列和进程
  4. 服务器对客户端的响应为"200"

您可以调用web服务方法的Async方法。它不会等待回应。

for (int i = 0; i < 100; i++)
{
    client.HelloWorldAsync();
}

我们在项目中做了类似的事情
其基本思想与Sean Kornish建议的一样:服务器接受客户端数据,并在调度处理本身的同时向客户端发送响应
以下是示例console client/wcf service:
客户端

class Program
{
    static void Main(string[] args)
    {
        var client = new Service1Client();
        for (int i = 0; i < 10000; i++)
        {
            string response = client.GetData(42);
            Console.WriteLine("Response: '" + response + "'");
        }
        Console.ReadLine();
    }
}

服务

public class Service1 : IService1
{
    private static int _serviceState = 1;
    public string GetData(int value)
    {
        new Task(DoHeavyLoadWork).Start();
        return string.Format("The server state is {0}", _serviceState);
    }
}

请注意,代码只是一个示例,所以它非常脏。但我希望能给你一些暗示。