我正在构建一个简单的双工wcf服务。在此服务中,客户端将消息发送到服务器,服务器将消息分发给所有连接的客户端。但是,尽管我将ServiceBehavior属性定义为 [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)],只有发送消息的客户端从服务器接收回来,而其他客户端则没有。我确认只有一个服务器实例正在运行。 我做错了什么?我在网上看了其他类似的问题,他们都说我应该定义InstanceContextMode = InstanceContextMode.Single,我已经这样了。
答案 0 :(得分:1)
你有回调合约吗?这样服务器就会回复客户端。 请查看以下有关实施回调合同的教程 Click here
同时检查以下Project Event Notification服务器。这个项目正在做你想要的类似事情。
如果您需要更多说明,请随时问我
您需要维护clistList,如代码段所示。
List<IMessageServiceCallback> clientList = new List<IMessageServiceCallback>();
public void Register()
{
IMessageServiceCallback callback = OperationContext.Current.GetCallbackChannel<IMessageServiceCallback>();
clientList.add(callback);
}
当您想要广播此消息时。您可以遍历列表并调用回调函数以向客户端发送消息。