繁体   English   中英

如何通过使用WCF NetHttpBinding(WebSockets)的服务器将一个客户端发送的消息广播(推送)到所有客户端?

[英]How to broadcast (push) a message send by one client, to all clients through a server using WCF NetHttpBinding (WebSockets)?

在.NET 4.5中,引入了一个新的WCF绑定-NetHttpBinding-,它使用WebSocket协议作为底层传输。 这意味着这可以实现从服务器的真正推送。 现在,我已经能够使用这样的回调契约进行某种推动:

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
public class WebSocketSampleService : IDuplexContract
{
    public string SayHelloDuplex()
    {
        //push to the current caller
        OperationContext.Current.
            GetCallbackChannel<IDuplexCallbackContract>().
            SayingHello("Hello from WebSockets");

        //answer the current caller in the regular http way
        return "Hello";
    }
}
[ServiceContract(CallbackContract=typeof(IDuplexCallbackContract))]
public interface IDuplexContract
{
    [OperationContract]
    string SayHelloDuplex(string name);
}
[ServiceContract]
public interface IDuplexCallbackContract
{
    [OperationContract]
    void SayingHello(string message);
}

我想做的是,当单个客户端调用SayHelloDuplex()方法时,将消息广播给所有客户端。 有没有办法访问所有客户端的回调通道? 或者我应该记录所有客户端的回调通道,以便以后在其他方法中使用(例如Connect() )? 也许我是以错误的方式解决这个问题?

任何帮助将不胜感激。 谢谢

回调通道对于每个客户端是唯一的,因此无法访问所有客户端的回调通道。

相反,您应该为列表中的每个客户端保存回调通道,或者甚至更好地保存在字典中,以便您可以定位特定客户端。

然后,当您想要向所有客户端广播消息时,只需查看列表即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM