Javascript 如何在服务器不运行时等待';你没反应吗?

Javascript 如何在服务器不运行时等待';你没反应吗?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在建立一个用户之间的互动网页,我有点迷路了 欢迎任何指导 想象一下以下场景: 客户端A打开“公共”网页并按下按钮 客户端A开始等待客户端B的响应 客户端B进入“管理员”网页并按下按钮 客户端A接收到客户端B按下按钮的信息 有一个页面的总体想法是客户端a可以点击一个按钮“我准备好玩了”并开始等待客户端B的响应。客户端B收到通知并按下按钮“我也准备好了”。客户端A收到通知,告知客户端B也准备好了 我知道这可以通过AJAX实现。但我不确定如何“等待”客户端B的响应,并在响应到达时更新网页 欢迎

我正在建立一个用户之间的互动网页,我有点迷路了

欢迎任何指导

想象一下以下场景:

  • 客户端A打开“公共”网页并按下按钮
  • 客户端A开始等待客户端B的响应
  • 客户端B进入“管理员”网页并按下按钮
  • 客户端A接收到客户端B按下按钮的信息
有一个页面的总体想法是客户端a可以点击一个按钮“我准备好玩了”并开始等待客户端B的响应。客户端B收到通知并按下按钮“我也准备好了”。客户端A收到通知,告知客户端B也准备好了

我知道这可以通过AJAX实现。但我不确定如何“等待”客户端B的响应,并在响应到达时更新网页

欢迎提供任何帮助/提示

感谢您的支持。

你似乎在以同步的方式思考,但你不应该这样想。您正在向服务器发出命令,但不应等待响应,因为:

  • 例如,由于互联网连接问题,该命令可能永远不会到达
  • 服务器可能已关闭
  • 服务器可能会错误地执行您的命令,并且永远不会响应
  • 其他玩家可能永远不会收到消息
  • 另一个玩家可能永远不会回答这个消息
  • 服务器可能永远不会收到其他玩家的命令
  • 服务器可能会错误地发出其他玩家的命令
  • 服务器可能永远不会向您发送通知
  • 您可能永远不会收到通知
一方面,这么多可能的失败点。而且。。。另一方面,Javascript是单线程的。因此,如果您等待其他玩家响应,那么您的UI将同时冻结(除了,但这是一个更高级的主题,现在,让我们将Javascript视为单线程环境)

相反,您应该异步思考。事实上,在AJAX的achronim中,第一个“A”代表“异步”。这意味着您发出一个请求,并定义在收到响应时将执行的操作。这个“您将做什么”被称为回调。您的客户端将同时工作并响应,当响应到达时,它将知道该做什么

不仅是你的要求,还有对方的回应 好吧,现在我们异步思考,当其他玩家决定加入你的游戏时,我们需要考虑我们的选择:

投票 您可以通过
setTimeout
和AJAX请求定期向服务器发出请求,一旦响应通知您游戏已被接受,请相应地进行处理。见:

提醒推送 一旦发生事件,服务器可能会向用户发送通知。见:

但您可能希望使用与服务器上使用的内容兼容的内容

网袋 WebSocket是保持打开的双工通道。如果实现并支持该框架,那么客户端A和客户端B都将连接,客户端A将通过WebSocket发送命令,服务器将接收该命令并通过WebSocket通知客户端B。当客户机B决定接受质询时,他将单击按钮,该按钮将通过WebSocket向服务器发出自己的命令,服务器将通过WebSocket通知客户机a。见:

总结
最好将其视为一系列事件和事件处理程序,而不是等待响应。

:短轮询、长轮询和web-sockets.WebRTC是另一种方法,正如Alexander提到的,您要关注的技术术语是轮询。WebSocket可能会帮到你。轮询看起来像我需要的,我正在研究它并寻找一个示例代码。如果你们中有人有可以共享的示例代码,欢迎:)