Asp.Net Mvc WebSocket - пользовательские аргументы для клиентов - PullRequest
0 голосов
/ 30 мая 2018

Моя структура WebSocket приведена ниже.

public HttpResponseMessage Get(int id, string kod)
{
    if (HttpContext.Current.IsWebSocketRequest)
    {
        HttpContext.Current.AcceptWebSocketRequest(new SocketHandler(id, kod));      
        return Request.CreateResponse(HttpStatusCode.SwitchingProtocols);
    }
    else
    {
        return Request.CreateResponse(HttpStatusCode.BadRequest);
    }
}

class SocketHandler : WebSocketHandler
{
    DnaEntities db = new DnaEntities();

    private static WebSocketCollection Clients = new WebSocketCollection();
    private Yonetim_Kullanici Kullanici;

    public SocketHandler(int KullaniciId, string OturumKontrolKod)
    {
        var sorgu = db.Yonetim_Kullanici.Where(k => k.Id == KullaniciId && k.OturumKontrolKod == OturumKontrolKod && k.Durum == 1);
        if (sorgu.Count() == 1)
        {
            Kullanici = sorgu.FirstOrDefault();
        }
    }

    public override void OnOpen()
    {
        if (Kullanici != null)
        {
            Clients.Add(this);
        }
        base.OnOpen();
    }
    public override void OnClose()
    {
        Clients.Remove(this);
        base.OnClose();
    }

    public override void OnMessage(string data)
    {
        foreach (var item in Clients)
        {
            var data = item.Kullanici
            //item.Send();
        }
    }

Ниже я могу отправить всем.

Clients.Broadcast(message);

Но, когда я хочу отправить по одному:

foreach (var item in Clients)
{
    var UserModel = item.Kullanici;
}

Сообщение об ошибке:

'WebSocketHandler' не содержит определения для 'Kullanici' и не имеет метода расширения 'Kullanici', принимающего первый аргумент типа 'WebSocketHandler 'может быть найден.

item.Kullanici => как вы можете видеть на картинке

1 Ответ

0 голосов
/ 30 мая 2018

Я думаю, что вы должны сначала привести его к унаследованному классу, например,

var UserModel = ((SocketHandler)item).Kullanici

Вы не показали его, но я предполагаю, что элементы в Clients имеют тип WebSocketHandler

...