0
에서 그룹을 만드는 방법
내 signalR 허브에서 그룹을 생성해야하지만 Context.ConnectionId 라인은 null입니다 :는 SignalR
public class MetricHub : Hub
{
public MetricHub()
{
Groups.Add(Context.ConnectionId, "Syslog");
Groups.Add(Context.ConnectionId, "Heatmap");
}
}
이이 MetricHub 클래스 사용 backgroundTicker 클래스입니다 :
using AutoMapper;
using Makbin.Data;
using Makbin.Web.Model;
using Makbin.Web.ViewModels;
using Microsoft.AspNet.SignalR;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Hosting;
namespace Makbin.Web.Hubs
{
public class test
{
public int id { get; set; }
public string name { get; set; }
}
public class BackgroundTicker : IRegisteredObject
{
private readonly MakbinRepository _repository;
private Timer devicesTimer;
private IHubContext hub;
public BackgroundTicker()
{
_repository = new MakbinRepository();
HostingEnvironment.RegisterObject(this);
hub = GlobalHost.ConnectionManager.GetHubContext<MetricHub>();
devicesTimer = new Timer(OnDevicesTimerElapsed, null,
TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5));
}
private void OnDevicesTimerElapsed(object sender)
{
var result = _repository.Peripherals.Select(x => new { x.PeripheralId, x.Severity });
var finalResult = JsonConvert.SerializeObject(result, Formatting.None,
new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});
hub.Clients.Group("Heatmap").broadcastMessage(DateTime.UtcNow.ToString(), finalResult);
}
public void Stop(bool immediate)
{
//deviceDetailTimer.Dispose();
devicesTimer.Dispose();
HostingEnvironment.UnregisterObject(this);
}
}
}
을
이 코드의 목적은 데이터를 보내기 전에 그룹을 정의하는 것입니다. 여기에서는 Syslog, Heatmap이라는 두 그룹을 정의했습니다. 게다가 클라이언트에 대한 연결은 단방향 (클라이언트에서 서버로)입니다.
나는 어떤 인증 부분이없는 내 프로젝트, 인증을받는 것이 중요합니까? –
필수 항목은 아니지만 중요 라인은'app.MapSignalR(); '입니다. –
@AminMohammadi가이 문제를 해결 했습니까? –