从WebSocketCollection获取特定客户端

时间:2013-07-30 19:28:50

标签: c# asp.net websocket

我正在编写一个websocket处理程序,它应该从一个客户端向另一个客户端发送消息。

CODE

public class SocketHandler : WebSocketHandler
{
    private static WebSocketCollection clients = new WebSocketCollection();

    private int id;

    public override void OnOpen()
    {
        this.id = Convert.ToInt32(Cypher.Decrypt(this.WebSocketContext.QueryString["id"]));
        clients.Add(this);         
    }

    public override void OnMessage(string message)
    {
        //sending code here
    }
}

我知道是否需要向所有连接的客户端发送消息,我只需要这样做:

clients.Broadcast("message");

...但我需要的是发送给具有从查询字符串分配给它的特定Id的特定客户端 - 让我们说1156

如何从客户端集合中获取id=1156的客户端?

我尝试使用lambda表达式,但它不起作用。它应该很简单......我之前在LINQ做过类似的事情,但此时我完全迷失了。

1 个答案:

答案 0 :(得分:8)

我终于设法在客户端搜索特定客户端并将消息专门发送给他。

clients.SingleOrDefault(r => ((SocketHandler)r).id == 1156).Send("Hey 1156!");

您只需要执行typecast,然后通常的查询就可以了。