Node.js 如何支持浏览器的服务器推送方式以及WebSocket在其中的作用?

Node.js 如何支持浏览器的服务器推送方式以及WebSocket在其中的作用?,node.js,jakarta-ee,webserver,websocket,server-push,Node.js,Jakarta Ee,Webserver,Websocket,Server Push,我有一个用例,我计划从一个浏览器到另一个服务器进行轮询,以检查给定客户的任何更新 探索推送方法的一种方法,在这种方法中,每当servlet在Web服务器上运行时,Web服务器(在我的例子中是tomcat)都可以自动执行推送 从第三方获取任何更新。我想到的第一个问题是javaclass如何知道它必须发送到哪个浏览器客户端 更新。然后我在。 这是一个令人惊讶的链接,展示了如何支持推送方法。但我提出了一些基本问题 我们将继续采用这种方法。这些是:- 1) 浏览器内部是否仅使用WebSocket与web

我有一个用例,我计划从一个浏览器到另一个服务器进行轮询,以检查给定客户的任何更新 探索推送方法的一种方法,在这种方法中,每当servlet在Web服务器上运行时,Web服务器(在我的例子中是tomcat)都可以自动执行推送 从第三方获取任何更新。我想到的第一个问题是javaclass如何知道它必须发送到哪个浏览器客户端 更新。然后我在。 这是一个令人惊讶的链接,展示了如何支持推送方法。但我提出了一些基本问题 我们将继续采用这种方法。这些是:-

1) 浏览器内部是否仅使用WebSocket与webserver通信,还是仅使用TCP进行通信? 据我所知,浏览器只使用TCP协议,尽管它受到一些浏览器(如chrome、mozilla)的支持

2) websocket(示例中由io.connect('url')提供)是否受所有浏览器特别是IE7、IE8支持 据我了解

3) 为了支持浏览器上的推送方式,WebSocket是唯一的选择? 据我了解,WebSocket主要用于将数据从webserver推送到浏览器(仅支持WebSocket的) 对于第一个浏览器,需要将websocket连接到webserver。现在,服务器将使用创建的websocket发出任何消息 数据到浏览器,对吗

4) 当websocket自动断开连接时是否有可能,比如请求超时或响应等待很长时间

5) 我们是否需要显式断开套接字连接,或者在浏览器关闭时它将自动关闭

如果回答是逐点的,那将非常有帮助

  • WebSocket协议是TCP协议。只是它从HTTP开始,然后可以升级到TCP

  • InternelExplorer应该支持版本10中的WebSocket。其他主要浏览器(Chrome、FireFox、Safari、Opera)也完全支持它

  • 还有许多其他的可能性。简单轮询、长轮询(您发出一个ajax请求,服务器只有在他有新数据时才响应)、隐藏无限iframe、使用flash等

  • 一旦使用端口(在这种情况下是浏览器)的应用程序被终止,那么所有连接也将终止


  • 关于答案中的第三点,这仍然是一种拉式方法,而不是推式方法。对吧?从技术上讲没有太大区别。除了轮询,何时发送数据取决于服务器。在轮询的情况下,我们实际上是在请求完成时从浏览器发出请求,这在理论上只是一个拉式概念。据我所知,真正的推送方法是,浏览器不必向服务器发出请求(一旦它打开套接字)。将数据推送到浏览器是服务器的责任client@MSach客户端始终必须进行初始连接。这就是为什么技术上没有区别。不同之处在于支持和性能。很抱歉进行了长时间的讨论,但我想弄清楚概念。我同意客户始终需要进行初始连接。但在轮询的情况下,客户端会向浏览器发出重复请求,而在服务器推送的情况下不会发生这种情况