如何使用WampSharp向特定客户端发送消息?

时间:2016-02-29 12:50:22

标签: c# wamp-protocol wampsharp

我们说我有3个客户:客户A,客户B和客户C.

它们都支持Ping()函数,它们使用反射注册(基于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();

我猜这会向所有客户广播一条消息?如何仅指定单个客户端?是否支持使用方案?

1 个答案:

答案 0 :(得分:2)

根据WAMP基本配置文件规范,每个路由器领域不可能多次注册相同的过程。注册时会出现以下代码(wamp.error.procedure_already_exists)。 为了实现您想要的功能,请考虑为每个客户端注册不同的过程。这可以使用ICalleeRegistrationInterceptor实现。