服务器可以请求客户端的浏览器吗?

时间:2011-07-10 11:55:53

标签: html5 request client-server

我在考虑客户端和服务器之间的同步事件。关于它的一般想法是客户端应该定期请求服务器检查已更改的数据。关于它的问题是,即使服务器端没有任何改变的东西,客户端也会发生不必要的请求。所以我认为有可能在事件发生时请求浏览器,但我不确定它是否可能。最近几天我听说这可以用html 5.

是否可以在网络上向服务器请求浏览器?如果有可能那么这是不好的做法吗?请求客户端常见的是什么?

3 个答案:

答案 0 :(得分:1)

可以使用Web套接字或抽象它们的工具。有关类似的问题/场景,请参阅此帖:

Polling/pushing-question

答案 1 :(得分:1)

HTML5允许服务器通过WebSocket API向客户端发送PUSH通知。您需要WebSocket server。那里有很多实现。该规范的唯一问题仍然是草案,可能会有变化。例如,最近在Google Chrome浏览器中更改了规范。因此,如果你愿意,它还没有被广泛支持。

答案 2 :(得分:0)

服务器不“请求”客户端,而是客户端通过打开HTML 5 WebSocket来初始化对话。然后该套接字保持打开状态,服务器可以随时将数据推送回客户端。

您可以使用“长轮询”在HTML 4中执行此操作,其中客户端发出请求并且响应也会保持打开更长时间。这里的问题是客户端无法在同一个套接字上发送另一个请求,因此需要保持两个套接字向服务器开放 - 一个用于发送请求,另一个用于接收响应。如果您有许多客户端连接到服务器并且已经达到服务器可以处理的连接数限制,那么这只会很糟糕。

在任何情况下,您都希望将服务器配置为使用“非阻塞”(NIO)连接,这样每个客户端就不需要一个线程,因为处理任何超过几千个并发线程的东西似乎带来了服务器停止。使用非阻塞解决方案,理论上每个服务器实例可以有5万或更多的连接,尽管它的有用性是有问题的,因为它可以通过这么多连接快速处理的请求数量。如果每个客户端每秒发出一个请求,那么每毫秒就会处理50个请求,这不太可能让你有足够的时间做任何与数据库相关的事情。

请参阅以下链接:

http://blog.maxant.co.uk/pebble/2011/06/21/1308690720000.html

http://blog.maxant.co.uk/pebble/2011/05/22/1306092969466.html

http://blog.maxant.co.uk/pebble/2011/03/05/1299360960000.html