我正在编写一个桌面应用程序,它需要响应服务器上随时可能发生的更改,并且我希望该应用程序在计算机登录时始终运行。有没有一种方式被认为是最标准的,或者应该避免的?我考虑了以下几个解决方案:
- 每秒向服务器发送两次请求(这大约是我想要的响应时间)
- 打开一个websockets连接,这样就只有一个开放的管道可以让服务器写入。
如果服务器只是在没有数据时返回一个错误或短消息,那么使用第一个选项会不好吗?这会影响网络上的其他网络活动吗?
提前感谢!!
正如Mark Setchell所说,避免不必要的轮询。
WebSocket不只是用于浏览器。桌面应用程序也可以使用WebSocket。如果您的应用程序通过WebSocket建立到服务器的连接,那么它就可以异步地接收数据或事件。没有投票。
现在您的桌面应用程序可以坐在那里,无论何时它从服务器接收到事件或数据,它都可以执行您想要的任何操作。
但是,如果在客户端上不启动服务器并为传入连接打开客户端的防火墙,我如何通知桌面客户端?
以这种方式使用WebSocket还可以防止您的客户端在其防火墙中打开入站端口,因为它们是发起(出站)连接的一方。
如果服务器知道何时有可用的更新,那么最好通知您的桌面应用程序。这将避免不必要的轮询。
在任何情况下,我可能会有一个单独的线程,专门与服务器通信,(可能锁定一个信号量后)更新主线程正在使用的一些全局变量,每当更新可用。