我正在尝试使用Silverlight 4和轮询双工启用流式响应,但是当发送到客户端的更新速率大于maxOutputDelay时,我会遇到奇怪的行为,这导致不发送更新.
例如,maxOutputDelay为7秒,每10秒发送一次更新,一切正常.但是如果我有一个1秒的maxOutputDelay,并且每500毫秒发送一次更新,则更新只是位于服务器端而不会被发送到客户端.
我的理解是设置transferMode ="StreamedResponse"应该立即将更新发送给客户端,但这似乎不起作用.
这是Web服务的Web.config中的绑定:
此配置基于本文中的信息:http://blogs.msdn.com/b/silverlightws/archive/2010/06/25/http-duplex-improvements-silverlight-4.aspx
谢谢.
我正在寻找一种可靠的方法来查找目录中的更改.
我尝试过使用FileSystemWatcher,但是当创建,更改或删除许多小文件时,它是相当不准确的.它错过了我测试中大约1%或2%的文件.当您快速添加或更改数千个文件时,这是非常重要的.
我已尝试以500毫秒,2000毫秒等不同时间间隔进行轮询更改.在这种情况下,我获得了太多的点击.这可能与FileInfo对象上的时间戳分辨率有关.
所以我的问题是; 是否可以使用.NET Framework可靠地获取对目录的更改?
- 基督徒
我有一个在N ec2服务器上运行的游戏,每个服务器都有自己的玩家(让我们假设它是每个服务器内部的独立游戏).
为这个游戏开发前端的最佳方法是什么,这样我就可以获得所有服务器上所有玩家的近实时信息.
我最初的做法是:
有一个共同托管的php网站从每个服务器轮询数据(每个服务器1个套接字).因为大多数共享解决方案并不真正提供永久套接字,所以这需要我每隔5秒左右创建和处理一个连接.因为没有具有该粒度的cronjob,我最终将使用一个不幸的客户端的请求来进行此更新.这里有很多错误,让我们考虑这是最糟糕的情况.
最好的方案(我猜)是用一些python/ruby/php基于web的前端创建小ec2实例,服务器应用程序设计用于轮询和保存网站数据库上的服务器的数据.虽然这应该可以正常工作,但我正在寻找一些解决方案,我不需要花那么多钱(即使微型实例对于这样的宠物项目来说也是昂贵的).
什么是最好和最便宜的解决方案?
我正在实现一些需要通用轮询的对话框,以从服务器获取新值.我正在尝试使用p:poll,但不幸的是我无法阻止它.当用户单击一个对话框中的按钮时,我开始轮询,并在用户单击子对话框中的按钮时尝试停止.这是我用来启动和停止民意调查的代码:
firstDialog:
<p:poll autoStart="false" widgetVar="pollQtdDisponivelCarregamento" immediate="true"
update="labelQuantidadeDisponivelCarregamento labelQuantidadeDisponivelItem"
listener="#{atualizadorQuantidadeDisponivelProduto.atualizarQuantidadeDisponivel(modeloPopupCarregarProduto.produtoSelecionado)}" />
<p:commandButton action="#{controladorPopupCarregarProduto.abrir}"
value="#{vendaMsg['popup.pre_venda.botao.adicionar_produto']}"
title="#{vendaMsg['popup.pre_venda.botao.adicionar_produto.descricao']}"
update="@form" onclick="pollQtdDisponivelCarregamento.start()" />
Run Code Online (Sandbox Code Playgroud)
childDialog:
<p:commandButton value="OK" style="float:right" immediate="true"
action="#{controladorPopup.fechar}" update="@form"
onsuccess="pollQtdDisponivelCarregamento.stop();" />
Run Code Online (Sandbox Code Playgroud)
我无法理解的一件事是:当我使用Firebug调试打破javascript执行时,轮询会正确停止,但是当我不这样做时,它就不会停止.有人知道怎么解决这个问题?
无法理解为什么我在WCF跟踪日志中收到很多警告:
TraceIdentifier:
http://msdn.microsoft.com/en-GB/library/System.ServiceModel.Activation.WebHostNoCBTSupport.aspx
描述:
此平台不支持或未启用扩展保护.如果您希望使用带有Windows身份验证的https的extendedProtection支持,请安装相应的补丁并启用它.
资源:
System.ServiceModel.Activation.MetabaseSettingsIis6/17653682
据我所知,在我手动强制IIS重启或回收AppPool之后,客户端服务重新连接到服务器,或者客户端最终开始获得404 not found服务器响应,顺便说一下,为什么它在IIS重启后开始获取404并不能清楚从中恢复1-10分钟甚至更长时间.
有关我正在使用的WCF配置的一些信息:
我试图从传感器到微控制器的几个串口读取.每个串口将接收超过2000个测量值(每个测量值为7个字节,全部为十六进制).他们同时开枪.现在我正在从4个串口进行轮询.此外,我将每个测量值转换为String并将其附加到Stringbuilder.当我完成数据接收后,它们将被输入到文件中.问题是CPU消耗非常高,从80%到100%不等.
我浏览了一些文章并将Thread.Sleep(100)放在最后.它可以在没有数据时减少CPU时间.当BytesToRead小于100时,我还在每次轮询结束时放置Thread.Sleep.它只在一定程度上有所帮助.
有人可以提出一个解决方案来从串口轮询并处理我得到的数据吗?也许每次我得到的东西附加都会导致问题?
//I use separate threads for all sensors
private void SensorThread(SerialPort mySerialPort, int bytesPerMeasurement, TextBox textBox, StringBuilder data)
{
textBox.BeginInvoke(new MethodInvoker(delegate() { textBox.Text = ""; }));
int bytesRead;
int t;
Byte[] dataIn;
while (mySerialPort.IsOpen)
{
try
{
if (mySerialPort.BytesToRead != 0)
{
//trying to read a fix number of bytes
bytesRead = 0;
t = 0;
dataIn = new Byte[bytesPerMeasurement];
t = mySerialPort.Read(dataIn, 0, bytesPerMeasurement);
bytesRead += t;
while (bytesRead != bytesPerMeasurement)
{
t = mySerialPort.Read(dataIn, bytesRead, bytesPerMeasurement …Run Code Online (Sandbox Code Playgroud) 假设我们有一个与Web服务通信的iOS应用程序.某些请求被委托给另一个Web服务,因此在另一侧的操作正在进行时会立即返回HTTP 200状态代码:
|iOS app| |Main service| |Delegate service|
| request | |
|------------------->|_ delegate |_
| | |----------------->| |
| HTTP 200 | | accepted | |
|<-------------------|_|<-----------------| |
| | | |
| | | |
| status? | | |
|------------------->|_ | |
| | | | |
| pending | | | |
|<-------------------|_| | |
| | | |
| | finished | |
| |<-------------------|_|
| | |
| status? | |
|------------------->|_ |
| …Run Code Online (Sandbox Code Playgroud) 你如何调试和调查为什么SCM轮询不起作用jenkins?很明显,有一些简单的方法可以启用它,但我发现它有时只是"停止"工作,虽然我可以看到SCM日志说最近没有发生轮询,我不知道从哪里开始调查轮询的位置实际上是在发生.
我想定期检查php脚本的状态并在浏览器上显示它.这是用于发布的jQuery.
$(document).ready(function() {
$("#tempbut").click(function(event){
$('#loader').show();
$('#mainarea').hide('fast');
$.post(
"template.php",
{
guide : $('#guide').val(),
title : $('#title').val()
},
function(data) {
$('#mainarea').empty();
$('#loader').fadeOut('slow');
$('#mainarea').append(data);
$('#mainarea').show('slow');
}
);
});
});
Run Code Online (Sandbox Code Playgroud)
在PHP脚本(未发布)中,我回显诸如"构建请求...","发送请求..."之类的语句,以通知用户进度.如果我没有使用jQuery post,我可以在每个echo之后使用flush()和obflush()显示状态.也许是因为回调在输出之前等待脚本完全执行?
有没有办法修改现有的jQuery .post来做到这一点?我看到一些使用.ajax的例子,但不是.post.
如果.ajax是唯一的方法,我将如何修改此代码?
谢谢!
编辑: 运行了!希望有人会觉得这很有帮助.(你可以删除console.log)
的test.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>TEST</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1" />
<script src="http://code.jquery.com/jquery-2.1.0.js"></script>
<script>
$.ajax({
url: "test.php",
xhrFields: {
onprogress: function(e) {
console.log(e.target.responseText)
$("body").html(e.target.responseText)
if (e.lengthComputable) {
console.log(e.loaded / e.total * 100 + '%');
}
}
},
success: function(text) {
console.log(text)
$("body").html(text+"<h1>done!</h1>")
}
}); …Run Code Online (Sandbox Code Playgroud) 我有一个MSSQL表,其中包含我的Windows服务应根据时间戳处理的计划任务,我想知道我有什么选择来轮询这样的表
SELECT *
FROM mydb
WHERE SYSUTCDATE() >= timestamp
Run Code Online (Sandbox Code Playgroud)
我可能需要至少每5秒轮询一次表格.基本上我希望我的Windows服务在表中的时间戳设置的时间处理数据.
对我来说,这似乎不是最有效的方式.我已经研究过DML和CLR触发器,我认为它们不会起作用,因为它们会在数据发生变化时触发,而不是在时间戳已经过去时触发.思考?
更新2:
我已经意识到把它称为"预定任务"是一个糟糕的措辞选择,所以我将尝试更详细地描述它.
该项目的目标是根据我们的业务逻辑向人们发送电话通知.一种情况是应该根据内部事件在特定时间打电话给多个人.可以多次呼叫同一个人,具体取决于电话呼叫的应答方式.因此,为了简化操作并消除管理每个电话呼叫状态的复杂性和开销,我认为通过将每个电话呼叫作为表中的条目来预先安排每个电话呼叫是个好主意.应停止通知时,将从表中删除待处理的电话呼叫.这将使Windows服务的设计变得非常简单.它所做的就是根据表中的时间戳发送通知.
更新1:
消息队列
我还没弄明白发件人如何在适当的时候将消息放入队列.
的SqlDependency
我使用来自使用SqlDependency检测更改的示例代码时遇到问题.由于某种原因,OnChange事件最初只会被触发,以后什么都不会发生.
更新:我不认为SqlDependency会工作,因为表中的数据不会更改以使触发器触发.
void Initialization()
{
// Create a dependency connection.
SqlDependency.Start(connectionString, queueName);
}
void SomeMethod()
{
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
using (SqlCommand command=new SqlCommand(
"SELECT timestamp,othercolumn FROM mydb WHERE SYSUTCDATE() >= timestamp",
connection))
{
// Create a dependency and associate it with the SqlCommand.
SqlDependency dependency=new SqlDependency(command);
// Maintain the refence …Run Code Online (Sandbox Code Playgroud) polling ×10
c# ×3
.net ×2
long-polling ×2
php ×2
silverlight ×2
wcf ×2
ajax ×1
amazon-ec2 ×1
duplex ×1
git ×1
ios ×1
javascript ×1
jenkins ×1
jquery ×1
jsf-2 ×1
primefaces ×1
serial-port ×1
sql ×1
sql-server ×1
web-services ×1