Skip to content

Instantly share code, notes, and snippets.

View sergioprates's full-sized avatar
🏠
Working from home

sergioprates

🏠
Working from home
View GitHub Profile
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Net.Http.Headers;
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace DotNetCoreStreaming.Results
{
@sergioprates
sergioprates / Startup.cs
Created November 18, 2018 11:52
Criando uma API Streaming com .NET Core
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
namespace DotNetCoreStreaming
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
@sergioprates
sergioprates / EventoEnum.cs
Created November 18, 2018 11:56
Criando uma API Streaming com .NET Core
namespace DotNetCoreStreaming.Enums
{
public enum EventoEnum
{
Insert = 1,
Update = 2
}
}
@sergioprates
sergioprates / Cliente.cs
Created November 18, 2018 12:01
Criando uma API Streaming com .NET Core
namespace DotNetCoreStreaming.Models
{
public class Cliente
{
public long Id { get; set; }
public string Nome { get; set; }
}
}
@sergioprates
sergioprates / ClienteController.cs
Created November 18, 2018 12:07
Criando uma API Streaming com .NET Core
private static ConcurrentBag<StreamWriter> _clients;
static ClienteController()
{
_clients = new ConcurrentBag<StreamWriter>();
}
@sergioprates
sergioprates / ClienteController.cs
Last active November 18, 2018 12:10
Criando uma API Streaming com .NET Core
[HttpPost]
public IActionResult Post(Cliente cliente)
{
//Fazer o Insert
EnviarEvento(cliente, EventoEnum.Insert);
return Ok();
}
[HttpPut]
public IActionResult Put(Cliente cliente)
@sergioprates
sergioprates / ClienteController.cs
Created November 18, 2018 12:13
Criando uma API Streaming com .NET Core
[HttpGet]
[Route("Streaming")]
public IActionResult Stream()
{
return new PushStreamResult(OnStreamAvailable, "text/event-stream", HttpContext.RequestAborted);
}
private void OnStreamAvailable(Stream stream, CancellationToken requestAborted)
{
var wait = requestAborted.WaitHandle;
using DotNetCoreStreaming.Enums;
using DotNetCoreStreaming.Models;
using DotNetCoreStreaming.Results;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using System.Collections.Concurrent;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
print('Hello World!')
vetor <- c(1, 5, 4)
vetor
# SAÍDA: 1 5 4