我编写了一个基本的信号器集线器,它接受来自客户端的调用,更新数据库,然后向所有客户端发出通知。
public class ElementHub : Hub
{
public void RenameElement(Guid elementId, string elementName)
{
//save details of rename
//notify clients
Clients.elementRenamed(elementId, elementName, DateTime.Now);
}
}
这在我的开发机器上完美运行 - 所有更新都是即时的(足够近) - 但是当我将其发布到 Windows Azure 网站时,我开始看到一些奇怪的行为。
发布后,通过集线器的第一个通知仍然几乎是即时的 - 可能会延迟几秒钟。但是第二个通知有时会延迟多达 30 秒!
我在通知中包含了服务器时间戳,因此我可以确认服务器响应速度足够快。问题可能出在运输的某个地方。
我是信号器的新手,所以我什至不知道去哪里找。任何人都可以建议可能导致这种行为的原因或我如何调试它?
最佳答案
现在缓冲和 Azure 网站存在一个错误,请参阅 http://github.com/SignalR/SignalR/issues/510 。您现在可以通过使用长轮询来解决这个问题。与此同时,我们正在努力解决这个问题。
关于performance - 信号器性能发生巨大变化的原因是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11804019/