小编par*_*man的帖子

SignalR:如果没有客户端方法,则不调用Hub OnConnected

我在SignalR写一个游戏.这个想法是你用你的笔记本电脑连接,它将用作"显示器",然后你连接智能手机,它将被用作"操纵杆".整个设置非常有效.

现在一切正常,我决定重构代码.我意识到操纵杆和显示器之间的关系是一种方式(显示器永远不需要将信息发送回操纵杆).因此我决定在操纵杆上不需要任何signalR可调用的客户端功能(例如,gameHub.client.joyStickMethod()在操纵杆js中没有用.

就在那时我发现了一些奇怪的东西

事实证明,public override Task OnConnected()除非我定义一个,否则不会调用我覆盖以处理不同类型的客户端(显示和操纵杆)的hub方法myHub.client.clientSideMethod().这是我正在处理的例子:

        var gameHub = $.connection.gameHub;
        gameHub.client.connection();
        $("#joystick").joystick({
            hub: gameHub
        });

        gameHub.client.activateJoystick = function () { };
        $.connection.hub.qs = "type=joystick&gameId=" + "@Model.Id";
        $.connection.hub.start();   //this will invoke on connected
Run Code Online (Sandbox Code Playgroud)

你看到那个空的客户端方法?这就是为什么OnConnected在服务器端调用的原因.如果我删除该行代码,则不会调用它.

        var gameHub = $.connection.gameHub;
        gameHub.client.connection();
        $("#joystick").joystick({
            hub: gameHub 
        });

        //gameHub.client.activateJoystick = function () { };
        $.connection.hub.qs = "type=joystick&gameId=" + "@Model.Id";
        $.connection.hub.start();   //this will invoke on connected
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为Hub上没有客户端方法.我可以RegistrateJoystick在Hub上添加一个方法并调用它,但我认为这种行为是出乎意料的.我的问题是:

有没有办法手动"连接"到集线器,以便OnConnect调用该方法?

javascript signalr signalr-hub signalr.client

17
推荐指数
1
解决办法
7761
查看次数

模型绑定POST与NancyFx中的对象数组

我有一个具有以下结构的json对象

{
 ContainerType: "Box",
 Items : [{Name: "Coin", Amount: 5}, {Name: "Spyglas", Amount : 1}]   
}
Run Code Online (Sandbox Code Playgroud)

该对象在Nancy后端系统中有一个表示:

public string ContainerType {get; set}
public IEnumberable<Item> Items {get; set}
Run Code Online (Sandbox Code Playgroud)

其中Item(如预期)是一个非常简单的公共属性对象:

public string Name {get; set;}
public double Amount {get; set;}
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我在我的模块中收到Post(基于NancyModule)时,只有字符串属性被绑定在这行代码中:

var model = this.databind<MyContainerModel>();
Run Code Online (Sandbox Code Playgroud)

我已尝试将列表类型更改为更具体(List <MyContainerModel>),更改为Arrays(MyContainerModel []),但似乎没有任何效果.

Nancy的git-repo演示部分中的数据绑定示例仅涉及整数的反序列化,但我的问题是使用javascript对象对数组进行反序列化.

有任何想法吗?

谢谢!

data-binding post json deserialization nancy

12
推荐指数
1
解决办法
6197
查看次数

RabbitMq Rpc:EventingBasicConsumer或QueueingBasicConsumer

关于RabbitMq网站教程非常简单,但我注意到在Rpc示例中,开发人员选择使用线程阻塞调用consumer.Queue.Dequeue()而不是EventingBasicConsumer使用其他地方使用的事件处理模型.

查看当前的文档,说明了这一点

从版本3.5.0开始,应用程序回调处理程序可以调用阻塞操作(例如IModel.QueueDeclareIModel.BasicCancel).IBasicConsumer回调是同时调用的.

凡为老文档(诉1.5.0)指出它不支持

应用程序回调处理程序不得调用阻止AMQP操作(例如 IModel.QueueDeclareIModel.BasicCancel).如果他们这样做,该频道将陷入僵局.[...]因此,QueueingBasicConsumer订阅队列是最安全的方式.

可能是RPC示例还没有更新?或者我错过了什么?我非常感谢能够指出一些关于此的文档.

rpc amqp rabbitmq

7
推荐指数
1
解决办法
2117
查看次数

用于分布式累积批处理作业的 Prometheus 检测

我每天多次运行构建脚本。我的感觉是我和我的同事花了相当多的时间等待这个脚本的执行。现在我想知道:我们每天花多少时间等待脚本执行?。我可以对总体平均值感到满意,即使我真的很想获得每日数据(例如“上周一我们花了 X 分钟等待脚本执行,周二......)

为了找到答案,我用推送网关启动了 Prometheus。在构建脚本中,我向推送网关添加了一个 REST 调用,该调用发布counter标有机器名称的指标(类型:)以及执行脚本所用时间的示例数据。

正在收集数据,但我意识到我收集的数据不足以回答我的问题,我需要将我推送的指标(即:当前运行经过的时间)累积到以前的数据。查看文档,我感觉推送网关不支持此功能:

Pushgateway 显然不是聚合器或分布式计数器,而是指标缓存

我的问题是:

  • 是否可以通过Prometheus Push Gateway收集我想要的指标。如果没有,我有什么选择?
  • 如果可能的话,我应该如何收集哪些指标?

prometheus prometheus-pushgateway

5
推荐指数
1
解决办法
2156
查看次数

在不修改类的情况下省略动态属性的类型?

我有一堆域对象,我将它们序列化,发送到其他应用程序,然后使用Json.Net. 这些对象可能具有以下属性

  • 定义为具有多个派生类的抽象基类
  • 动态属性

我使用了TypeNameHandling.Auto,它将$type属性添加到与声明类型不同的类型。然而,这个设置对我的动态属性有一个不需要的副作用,即它们的类型也被声明了。

在下面的示例中,modelpublic dynamic Model { get; set; }在我的 C# 代码中定义的动态属性。

"model":{"$type":"<>f__AnonymousType0`3[[System.String, mscorlib],[System.String, mscorlib],[System.String, mscorlib]], ExampleAssembly","link":"http://www.google.com","name":"John"}
Run Code Online (Sandbox Code Playgroud)

当尝试在另一个程序集中反序列化此字符串时,Json.Net 无法(当然)找到ExampleAssembly. 使用该TypeNameHandling.None属性给出以下属性序列化

"model": {"link":"http://www.google.com","name":"John"}
Run Code Online (Sandbox Code Playgroud)

可以成功反序列化为dynamic. 但是,这会破坏派生类型的反序列化。

关于如何在不实现自定义IContractResolver和可能的其他自定义代码的情况下使其工作的任何想法?

我不拥有域对象,所以我不能用属性装饰它们或它们的属性,也不能允许它们实现接口等。我正在寻找的是序列化程序中省略类型的某种设置dynamics

恕我直言,这应该可以通过设置以某种方式进行配置,我只是没有找到它。

.net c# serialization json json.net

2
推荐指数
1
解决办法
855
查看次数