项目需要使用.net core的webapi后台处理一个大文件,同时向客户端实时返回处理进度。所以实现了一个简单demo,记录一下。
一、服务端
- 新建了一个handler
2.SocketHandler.cs内容如下
using DotnetCoreWebAPI.Common;
using DotnetCoreWebAPI.Models;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace DotnetCoreWebAPI.Handler
{
public class SocketHandler
{
public const int BufferSize = 4096;
public string basestringjson = string.Empty;
WebSocket socket;
SocketHandler(WebSocket socket)
{
this.socket = socket;
}
async Task EchoLoop()
{
var buffer = new byte[BufferSize];
var seg = new ArraySegment<byte>(buffer);
while (this.socket.State == WebSocketState.Open)
{
var incoming = await this.socket.ReceiveAsync(seg, CancellationToken.None);
string receivemsg = Encoding.UTF8.GetString(buffer, 0, incoming.Count);
if (receivemsg == "get")
{
string stringJson = "";