我目前在WPF应用程序中自托管SignalR服务器。在这个应用程序中,我需要在客户端上调用一个方法每秒至少500次。现在我在每次更改时都在客户端调用方法。客户端的CPU是通向高端的。我正在传输的对象包含大约20个基本属性。
我的要求是我不能丢失或跳过任何消息。但我可以每秒以突发的形式将通知作为列表发送。
我不确定哪种方式会发挥最佳效果:短而快或长而罕见。
答案 0 :(得分:1)
我将缓冲信息服务器(仅存储更改)并等待客户端请求新数据。每次客户端请求数据时,服务器都会在一个数据包(二进制)中发送信息。当客户端完成数据处理后,它会要求提供新数据。这样可以防止在套接字上写入太多数据,因此不会阻塞。队列的长度表示客户端的传输/处理。当队列变得太大(服务器端)时,您的网络速度不够快,或者您的客户端无法处理那么多数据。
我在我的软件上使用此方法,该软件连接到PLC,发送机器人角度/位置的当前状态
另一种方法是使用UDP,但它有损,所以在你的情况下不是很有用。