【问题标题】:Server can request client's browser?服务器可以请求客户端的浏览器吗?
【发布时间】:2011-10-02 05:26:52
【问题描述】:

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

是否可以从 web 中的服务器请求客户端浏览器?如果有可能,那么这是不好的做法吗?请求客户端的常见场景是什么?

【问题讨论】:

  • 澄清一下,您要问的是服务器是否可以将操作推送给客户端以执行某些操作?

标签: html request client-server


【解决方案1】:

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

Polling/pushing-question

【讨论】:

    【解决方案2】:

    由于WebSocket API,HTML5 允许服务器向客户端推送通知。您将需要一个WebSocket server。那里有很多实现。该规范的唯一问题仍然是草案并且可能会更改。例如,Google Chrome 浏览器中的规范最近发生了变化。因此,如果您愿意,它尚未得到广泛支持。

    【讨论】:

      【解决方案3】:

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

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

      在任何情况下,您都希望将服务器配置为使用“非阻塞”(NIO) 连接,这样它就不需要每个客户端一个线程,因为处理超过几千个并发线程似乎会带来服务器停止。使用非阻塞解决方案,理论上每个服务器实例可以有 50,000 个或更多连接,尽管这会有多大用处值得怀疑,因为它可以通过这么多连接快速处理大量请求。如果每个客户端每秒发出一个请求,您将每毫秒处理 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-04
        • 2019-05-16
        • 1970-01-01
        • 1970-01-01
        • 2015-10-21
        • 1970-01-01
        相关资源
        最近更新 更多