我们说我有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();
我猜这会向所有客户广播一条消息?如何仅指定单个客户端?是否支持使用方案?
答案 0 :(得分:2)
根据WAMP基本配置文件规范,每个路由器领域不可能多次注册相同的过程。注册时会出现以下代码(wamp.error.procedure_already_exists)。 为了实现您想要的功能,请考虑为每个客户端注册不同的过程。这可以使用ICalleeRegistrationInterceptor实现。