桌面应用程序应如何不断轮询服务器以获取更新?

Chr*_*oba 3 server-side websocket

我正在编写一个桌面应用程序,需要响应我的服务器上可能随时发生的更改,并且我希望应用程序在计算机登录时始终运行.有没有一种方法被认为是最标准的或应避免的方法?我考虑过的几个解决方案是:

  • 每秒向服务器发送两次请求(这大约是我想要的响应时间)
  • 打开websockets连接,以便服务器可以只写一个打开的管道.

如果服务器只是在没有数据的情况下返回错误或短消息,那么使用第一个选项会不好?这会影响网络上的其他网络活动吗?

提前致谢!!

Rob*_*ann 7

正如Mark Setchell所说,避免不必要的民意调查.

WebSocket不仅适用于浏览器.桌面应用程序也可以使用WebSocket.如果您的应用程序通过WebSocket建立了与服务器的连接,那么它可以异步接收数据或事件.没有民意调查.

现在您的桌​​面应用程序可以坐在那里,每当它从服务器接收事件或数据时,它就可以采取您想要的任何操作.

但是,如果不在客户端启动服务器并打开客户端的防火墙以进行传入连接,我将如何通知桌面客户端?

以这种方式使用WebSocket还可以防止客户端在其防火墙中打开入站端口,因为它们是启动(出站)连接的端口.

  • 正确.数据只遍历客户端连接发送的东西或服务器发送的东西.请注意,这适用于WebSocket层及更高层.在下面,TCP可能正在进行一些来回通信,但这不会出现在您的应用程序中.在实践中,如果防火墙或代理等中间设备在一段时间内未检测到任何活动,则可以终止空闲连接.因此,您可能会发现通过WebSocket连接定期发送消息非常有用,因此看起来有活动.WebSocket协议也可以使用ping/pong. (4认同)