信号开销

Rya*_*yan 2 timer signalr

我有一个客户端通过定期(每4秒)发送它的新位置来更新其在服务器上的位置.我还有一个跟踪以前移动设备的客户端,通过定期对服务器进行花粉(每5秒)并获取最新位置.

是否应通过SignalR(用于发送最新位置)或使用计时器进行此通信?我说这是因为SignalR有一些开销会产生更大的请求大小,这可能会非常昂贵.

谢谢你,RYan

Dre*_*rsh 10

HTTP通信获胜

现在,基于我对您的描述的理解,您正在进行多个更新POST,然后侦听器正在使用轮询GET请求.这些具有带头的单独HTTP请求的开销,如果不使用keep-alive或超过保持活动超时,则[重新]建立TCP连接.

使用SignalR,你至少可以改善事物的轮询GET方面,因为SignalR可以使用轮询,它将通过单个HTTP GET请求汇集多个响应,并且"实时"而不是总是这样做有一个艰难的4秒滞后时间.从那里开始,您可以通过服务器发送事件(SSE)向完整的Web套接字工作,具体取决于客户端和服务器功能.任何这些方法都应该比您当前描述的实现更有效.

请求大小获胜

每条SignalR消息周围只有一个小"信封".与HTTP标头相比,您的浏览器客户端肯定不得不随每次更新发送POST并立即轮询GET,我认为SignalR将轻松赢得这一点.显然,在任何一种情况下,消息的有效负载都是相同的JSON,所以这是一个清洗.

编程模型获胜

最重要的是,我认为,使用SignalR为您提供了一个编程模型,可以从最终使用的确切底层技术中抽象出来,并为您提供一致的实时通信API,而不必最终担心向断开连接的请求/响应模型.