【问题标题】:How to send a message to a specific client using WampSharp?如何使用 WampSharp 向特定客户端发送消息?
【发布时间】:2016-02-29 12:50:22
【问题描述】:

假设我有 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();

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

【问题讨论】:

    标签: c# wamp-protocol wampsharp


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 2018-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      相关资源
      最近更新 更多