假设我有三个客户:客户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();我猜这会向所有客户传达信息吗?如何仅指定单个客户端?这个使用场景支持吗?
发布于 2016-02-29 14:08:45
根据WAMP基本配置文件规范,不可能在每个路由器的范围内多次注册相同的过程。下面的代码将在注册时出现异常(wamp.error.procedure_already_exists)。为了实现您想要的结果,请考虑为每个客户端注册不同的过程uri。这可以使用ICalleeRegistrationInterceptor来实现。
https://stackoverflow.com/questions/35700030
复制相似问题