6

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

代码

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 中做过类似的事情,但此时我完全迷失了。

4

1 回答 1

11

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

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

您只需要这样做typecast,然后通常的查询就可以正常工作。

于 2013-08-09T20:42:12.743 回答