使用 Web 套接字的状态侦听器

本文关键字:状态 侦听器 套接字 Web 使用 | 更新日期: 2023-09-27 18:31:47

我的任务是创建一个Web套接字服务器,供用户监听彼此的状态。

这是一项简单的任务,但我还没有找到任何可用的方法来完成此操作,所以希望这里有人可以帮助我。我特别不想使用 SignalR 之类的,我的目标是看看这是否可以尽可能简单地使用 c# 本机工具完成。

在我的用例中,我有团队,其中有 2 种类型的成员,所以我的数据模型可能是这样的:

public class Team
{
    public int id;
    public string name;
}
public class TeamMember
{
    public int id;
    public int teamId;
    public string name;
    public MemberType type;
}
public enum MemberType
{
    Normal,
    Listener,
}

侦听器成员应从其团队中的每个普通成员接收状态更新。

我找到的唯一工作示例是简单的回显服务器,就像Paul Batum在这里的例子一样:http://paulbatum.github.io/WebSocket-Samples/AspNetWebSocketEcho/

有没有办法增强该代码以将消息发送到完全不同的侦听套接字,而不是示例中的相同侦听套接字?具体来说,对同一团队的那些听众用户?

使用 Web 套接字的状态侦听器

听起来你想使用观察者/可观察者模式。 这通常是通过发布/订阅系统实现的。 您需要创建数据结构来处理线程安全的订阅列表(添加/删除)、重试和故障恢复机制(分布式计算 101)、传入数据的队列机制等。等。。。 它的工作比你想象的要多。

编写任何程序的第一条经验法则是:在继续实施之前查看存在的内容。

ActiveMQ,IBM MQ/MQ-Lite,Kaazing(我为谁工作),许多MQTT/WS实现...大量的OSS东西已经在那里使用。