2016-02-29 180 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來實現。

相關問題