Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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
Javascript 网袋。失去互联网、保持活力的消息、应用程序架构等_Javascript_Html_Xmlhttprequest_Websocket_Long Polling - Fatal编程技术网

Javascript 网袋。失去互联网、保持活力的消息、应用程序架构等

Javascript 网袋。失去互联网、保持活力的消息、应用程序架构等,javascript,html,xmlhttprequest,websocket,long-polling,Javascript,Html,Xmlhttprequest,Websocket,Long Polling,关于WebSocket有很多信息。这项技术本身是惊人的,这一点毫无疑问。在我开始在我的应用程序中使用它们之前,我只想让社区回答以下问题: “…为了保持状态,应用程序可以在WebSocket上发送保持活动的消息,以防止因空闲超时而关闭它…” “…理想情况下,未来版本的WebSocket将支持超时发现,因此它可以告诉应用程序保持活动消息的时间…” 这感觉像似曾相识。之前,我们必须每%period\u time%轮询服务器一次,以获取所需的更新信息。对于websocket,我们必须使用保持活动消息每%

关于WebSocket有很多信息。这项技术本身是惊人的,这一点毫无疑问。在我开始在我的应用程序中使用它们之前,我只想让社区回答以下问题:

“…为了保持状态,应用程序可以在WebSocket上发送保持活动的消息,以防止因空闲超时而关闭它…”

“…理想情况下,未来版本的WebSocket将支持超时发现,因此它可以告诉应用程序保持活动消息的时间…”

  • 这感觉像似曾相识。之前,我们必须每%period\u time%轮询服务器一次,以获取所需的更新信息。对于websocket,我们必须使用保持活动消息每%period\u time%轮询websocket服务器一次,以确保internet连接仍然活动/websocket服务器仍在工作。利润是多少

    还有一件事是关于这些保持活力的信息。Websocket协议的优点是使用的流量比HTTP少。如果我们发送保持活动状态的消息,似乎交通优势消失了。也许不是

  • 如果我使用WebSocket,我应该如何处理应用程序中的互联网丢失问题?我指的是互联网连接突然中断的真实情况(我指的是没有发生“navigator.offline”事件)。我应该使用某种setTimeout函数来查找保持活动状态的消息,还是有更好的方法来处理这种情况

  • REST让我们清楚地了解了应用程序应该如何工作以及请求应该是什么样子。在websocket驱动的应用程序中,最好的方法是什么?我是否应该(比如)在request.action字段中包含JSON编码的消息?应用程序应该如何执行PUT请求?REST模型中有URL资源来处理这个问题,所以我应该使用这些方法的组合,还是有更简单的smth


  • 我认为通过理解WebSocket的真正用途,您的大多数问题都可以得到澄清。WebSocket的设计初衷并不是为了替换任何已经就位且运行良好的东西。例如,它不是设计为AJAX的低开销版本。其目的是在浏览器和服务器之间提供双向、低延迟、全双工通信通道。它的真正目的是启用一个新的web应用程序域,或者改进当前滥用HTTP实现双向通信的应用程序域

    考虑到这一点,让我谈谈你的要点:

  • 定期WebSockets ping/pong消息的目的有两个:防止通道因TCP超时而关闭,以及更快速地检测通道何时关闭(这在历史上是TCP的一个弱点)。HTTP/AJAX轮询的目的是绕过HTTP不是双向的这一事实(即,客户端轮询以使服务器有机会发回数据)。WebSocket乒乓/乒乓帧的长度通常为2字节。HTTP/AJAX轮询需要完整的头文件、cookie等,每个请求/响应的总字节数可以轻松超过1000字节。即使您每秒通过WebSocket发送10次乒乓球,您也不太可能与HTTP/AJAX每2秒轮询的开销相比。但是,请注意,应用程序不具备发送乒乓消息的能力。这在浏览器和服务器之间

  • 如果您失去Internet连接,您将收到onclose事件。如果您的浏览器没有为您发送乒乓球消息,则在网络连接中断后尝试发送消息之前,您可能不会收到onclose

  • 我不会用WebSocket来取代正在工作的RESTful服务。您将要做大量的映射工作,但可能没有什么好处(再说一次,WebSockets的设计并不是为了替换已经运行良好的内容)。我可以设想两种情况的结合:REST用于状态传输,WebSocket用于事件通知。例如,服务器发送一条WebSocket消息,指示“发生了某些更改”,这会触发客户端执行REST请求以查找更改

  • 更新

    澄清:你们可以在WebSocket上做REST,但这在哲学上是不匹配的。REST是一种对底层传输系统毫无偏见的架构风格。它是一个受约束的体系结构:“客户机-服务器”、“无状态”、“可缓存”、“分层系统”、“按需编码”和“统一接口”。WebSocket不受这些约束;它是一个通用的消息传输系统。您可以将WebSocket约束为RESTful,但除非您对REST和WebSocket都有深入的了解,并且能够确定何时这样做是正确的,否则不要这样做。

    “请停止说常见的话,告诉我们,除了聊天和证券交易所应用外,您知道有多少在生产就绪的应用程序中使用WebSocket的实际案例?”

    我在一个太空船动作游戏中使用了WebSocket来支持多人游戏。Websockets是一项非常酷的技术,但我也发现它令人沮丧地不可预测——这可能只是因为我是个新手并且犯了一些错误。如果我解决了更多的bug,我可能会添加一个链接,但是它崩溃太多了,所以我现在没有在实时服务器上安装它


    我想这会使它成为一款非生产型应用,但假设我不明白为什么其他更有经验的人不会做好它。

    这个问题不适合我们的问答格式。我们希望答案通常涉及事实、参考资料或特定专业知识;这个问题可能会引起意见、辩论、争论、投票或广泛的讨论。@Jakub我认为stackoverflow是获得这项技术答案的最佳方式。我只想听听那些知道这些问题答案的人。事实上,不需要辩论。一个问题