我在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调用该方法?
我有一个具有以下结构的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对象对数组进行反序列化.
有任何想法吗?
谢谢!
关于RabbitMq网站的教程非常简单,但我注意到在Rpc示例中,开发人员选择使用线程阻塞调用consumer.Queue.Dequeue()而不是EventingBasicConsumer使用其他地方使用的事件处理模型.
查看当前的文档,说明了这一点
从版本3.5.0开始,应用程序回调处理程序可以调用阻塞操作(例如
IModel.QueueDeclare或IModel.BasicCancel).IBasicConsumer回调是同时调用的.
凡为老文档(诉1.5.0)指出它不支持
应用程序回调处理程序不得调用阻止AMQP操作(例如
IModel.QueueDeclare或IModel.BasicCancel).如果他们这样做,该频道将陷入僵局.[...]因此,QueueingBasicConsumer订阅队列是最安全的方式.
可能是RPC示例还没有更新?或者我错过了什么?我非常感谢能够指出一些关于此的文档.
我每天多次运行构建脚本。我的感觉是我和我的同事花了相当多的时间等待这个脚本的执行。现在我想知道:我们每天花多少时间等待脚本执行?。我可以对总体平均值感到满意,即使我真的很想获得每日数据(例如“上周一我们花了 X 分钟等待脚本执行,周二......)
为了找到答案,我用推送网关启动了 Prometheus。在构建脚本中,我向推送网关添加了一个 REST 调用,该调用发布counter标有机器名称的指标(类型:)以及执行脚本所用时间的示例数据。
正在收集数据,但我意识到我收集的数据不足以回答我的问题,我需要将我推送的指标(即:当前运行经过的时间)累积到以前的数据。查看文档,我感觉推送网关不支持此功能:
Pushgateway 显然不是聚合器或分布式计数器,而是指标缓存
我的问题是:
我有一堆域对象,我将它们序列化,发送到其他应用程序,然后使用Json.Net. 这些对象可能具有以下属性
我使用了TypeNameHandling.Auto,它将$type属性添加到与声明类型不同的类型。然而,这个设置对我的动态属性有一个不需要的副作用,即它们的类型也被声明了。
在下面的示例中,model是public 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。
恕我直言,这应该可以通过设置以某种方式进行配置,我只是没有找到它。
json ×2
.net ×1
amqp ×1
c# ×1
data-binding ×1
javascript ×1
json.net ×1
nancy ×1
post ×1
prometheus ×1
rabbitmq ×1
rpc ×1
signalr ×1
signalr-hub ×1