Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无轮询的java客户端服务器更新_Java_Android_Client Server_Polling - Fatal编程技术网

无轮询的java客户端服务器更新

无轮询的java客户端服务器更新,java,android,client-server,polling,Java,Android,Client Server,Polling,在构建服务器时,有时执行客户端到服务器之间的异步任务(在异步时间内响应客户端), 或者服务器需要向客户端发送消息 现在,如果客户机一直在侦听(意味着轮询),则需要大量资源,这是有问题的 在这里,我假设操作系统介入并承担轮询适当端口的角色,并使用适当的事件让应用程序知道(应用程序使用OS API订阅) 我的假设正确吗 如何使用操作系统的API订阅端口?(为了论证起见,我们假设android) 从服务器到客户端的消息究竟是如何工作的? 服务器如何始终知道客户端的IP 我在这个主题上看到了很多问题,但

在构建服务器时,有时执行客户端到服务器之间的异步任务(在异步时间内响应客户端), 或者服务器需要向客户端发送消息

现在,如果客户机一直在侦听(意味着轮询),则需要大量资源,这是有问题的

在这里,我假设操作系统介入并承担轮询适当端口的角色,并使用适当的事件让应用程序知道(应用程序使用OS API订阅)

我的假设正确吗

如何使用操作系统的API订阅端口?(为了论证起见,我们假设android)

从服务器到客户端的消息究竟是如何工作的? 服务器如何始终知道客户端的IP

我在这个主题上看到了很多问题,但无法理解全局

编辑:


我在安卓系统中使用GCM,但也看到其他应用程序没有使用GCM,但仍然能够正确地使用GCM,这也是一个更普遍的问题,即java与它使用的任何操作系统(ubnutu、windows、android等)相比,什么是正确的方法。

完全正确-轮询通常是一种资源浪费。直到最近,许多应用程序要么保持套接字打开,每隔几分钟轮询一次以保持其活动状态,要么定期对服务器进行HTTP调用

如今,大多数应用程序都使用它来推送数据,而不是不断地进行轮询。正如您正确猜测的那样,这是通过保持与Google服务器的持久连接来实现的。这样做的好处是电池寿命非常长,所有应用都可以使用这一资源发送推送通知,而不是每个应用都必须轮询不同的服务器或创建自己的持久连接

其思想是从服务器向GCM发送请求(这可以是对用户活动等的响应),然后将请求发送到客户端的所有设备。您可以发送带有小负载(最多4kb)的消息,也可以发送“发送到同步”消息,通知应用程序与服务器联系(例如,在用户更改后从服务器同步新数据)

在这里,我假设操作系统介入并承担轮询适当端口的角色,并使用适当的事件让应用程序知道(应用程序使用OS API订阅)

GCM将消息推送到客户端,这样就不会像在简单的轮询系统中那样出现活动等待

从服务器到客户端的消息究竟是如何工作的?服务器如何始终知道客户端的IP

服务器不需要知道客户端IP,因为任何在线android设备通常都会与GCM保持连接。针对特定用户的目标是通过


(哦,我意识到你的问题比Android更一般,我对Android有更多的经验,但iOS也有类似的系统。我遇到的一些开发人员喜欢使用它来管理推送通知)。

我应该提到我已经在使用GCM了,并且想知道其他的替代方案。比如说在ubuntu或windows上,而不是android上。。我现在更新问题