Asp.Net Mvc WebSocket - 客户端的自定义参数

Posted

技术标签:

【中文标题】Asp.Net Mvc WebSocket - 客户端的自定义参数【英文标题】:Asp.Net Mvc WebSocket - Custom Arguments for Clients 【发布时间】:2018-05-30 14:53:34 【问题描述】:

我的 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 => 正如您在picture 中看到的那样

【问题讨论】:

【参考方案1】:

我认为您应该能够首先将其转换为继承的类,例如

var UserModel = ((SocketHandler)item).Kullanici

您还没有显示它,但我会假设 Clients 中的项目属于 WebSocketHandler 类型

【讨论】:

谢谢。是的,演员阵容是个好主意。 @ADyson 第二个问题? @BarışSamedHalıcı 如果您还有第二个问题,请在新帖子中创建第二个单独的问题。我回答了当时显示的原始问题。由于人们通过回答问题获得积分,因此您不能永远向同一个帖子添加更多问题。如果我的回答对您的原始问题有所帮助,请标记为已接受。如果您需要我对另一个问题的帮助,请在此处发表评论并附上指向它的链接。谢谢。 是的,这是真的。但第二个问题是第一个问题的延续。第二个问题的答案可能会因第一个问题的选择而异。谢谢。 如果您仍然坚持,我提出一个新问题。没问题。 据我所知,我的答案是第一个问题的唯一解决方案,因此两者之间没有任何直接联系。您希望将 Kisisel_Bildirimlerim 对象列表中的值与 SocketHandler 对象列表中的某些值进行比较。老实说,它们是如何存在的(例如通过铸造或其他方法)并不真正相关。所以是的,请提出一个新问题......但首先对 C# 中的列表进行比较研究,可能已经存在一个您可以适应的原则的一般示例。

以上是关于Asp.Net Mvc WebSocket - 客户端的自定义参数的主要内容,如果未能解决你的问题,请参考以下文章

传输了几条消息后,ASP.NET MVC 4.5 WebSocket 服务器失去连接

ASP.NET MVC 4 和 WebSockets

.NET异步性能测试(ASP.NET MVC WebAPI异步方法)

ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室之 图文,附件消息(2016-05-05 12:13)

ASP.NET C# WebSocket

Asp.Net 作为客户端打开 websocket