我正在编写一个 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("消息");
...但我需要的是将查询字符串中分配给它的特定 Id
发送给特定客户端 - 比方说 1156
。
如何从客户端集合中获取带有 id=1156
的客户端?
我尝试使用 lambda 表达式,但它不起作用。它应该很简单......我以前在 LINQ 中做过类似的事情,但此时我完全迷失了。
最佳答案
我终于设法通过客户搜索特定客户并将消息专门发送给他。
clients.SingleOrDefault(r => ((SocketHandler)r).id == 1156).Send("Hey 1156!");
您只需要执行类型转换
,然后通常的查询就可以正常工作。
关于c# - 从 WebSocketCollection 获取特定客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17955722/