2016-02-29 135 views
0

比方说,我有3个客户:客户A,客户B和客户C.如何使用WampSharp向特定客户端发送消息?

它们都将支持中国平安()函数,这是他们寄存器使用反射(代码基于WampSharp文档):

public interface IArgumentsService 
{ 
    [WampProcedure("com.arguments.ping")] 
    void Ping(); 
} 

public class ArgumentsService : IArgumentsService 
{ 
    public void Ping() 
    { 
    } 
} 

IArgumentsService services = channel.RealmProxy.Services; 
ArgumentService callee = new ArgumentService(this); 
services.RegisterCallee(callee); 

接下来,我设置每个客户端上的代理,使呼出电话:

DefaultWampChannelFactory channelFactory = new DefaultWampChannelFactory(); 
IWampChannel channel = channelFactory.CreateJsonChannel("ws://127.0.0.1:8080/", "realm1"); 
Task channelOpenTask = channel.Open(); 
channelOpenTask.Wait(); 
IArgumentsService proxy = channel.RealmProxy.Services.GetCalleeProxy<IArgumentsService>(); 

我将如何去从客户端A发送消息给客户机C?在通过代理发送消息给路由器时,我没有看到解决特定客户端问题的方法吗?我所能做的只是以下几点:

proxy.Ping(); 

我在猜测会向所有客户端广播一条消息吗?我怎样才能指定一个单一的客户端?该使用场景是否支持?

回答

2

根据WAMP基本配置文件规范,不可能在路由器的领域多次注册相同的过程。下面的代码会导致注册异常(wamp.error.procedure_already_exists)。 为了达到您想要的效果,请考虑为每个客户端注册一个不同的过程。这可以通过使用ICalleeRegistrationInterceptor来实现。

相关问题