【问题标题】:Draw application that sends what user draws to others [closed]将用户绘制的内容发送给其他人的绘制应用程序[关闭]
【发布时间】:2013-09-18 17:57:50
【问题描述】:

想象一个画布绘画工具,您可以在其中在网站上绘画和绘画,但就像聊天应用程序一样,您所绘制的内容也会立即显示在您朋友的画布上。 WebSockets 会更适合这个。但由于我的网站由服务器上不支持 JavaScript 的网络酒店托管,因此 WebSockets 不是一个选项(如果我理解正确的话)。有没有其他方法可以构建它 - 几乎可以保持 WebSockets 提供的效率?还是我唯一的好解决方案是将我的网站托管在让我运行 JavaScript 的服务器上(就像 note.js 一样)?

【问题讨论】:

  • 像这样令人难以置信的定制和涉及的东西绝对应该使用您完全控制的服务器。一旦你让它运行,我很想看到它在行动!
  • 仅供参考:支持 WebSockets 的不仅仅是 Node.JS。当套接字不可用时,长轮询技术通常是备用方法。
  • 甚至还有用于 WebSockets 的 PHP 选项......但您当前的 Web 主机可能不支持它们:socketo.me/docs/deploy

标签: php node.js websocket chat


【解决方案1】:

【讨论】:

  • 不确定这是我的问题的答案。我指出我无法运行 node.js,因为我的主机不允许服务器上的 JavaScript。并且你提供了一个使用 node.js 的教程?
  • 我会找到一个便宜的主机,让你可以使用 node.js!
【解决方案2】:

实时共享画布数据的下一个最佳解决方案是 ajax 长轮询。简而言之,客户端向服务器发出 ajax 请求,如果服务器有新的画布数据,则返回数据,否则保持 HTTP 请求打开,直到有新数据返回。一旦返回数据,就会重复该过程。

由于我们使用的是标准的 HTTP 请求,所以它不会像 web-sockets 那样高效,因为每个 HTTP 请求都带有一堆不需要的标头。

更多关于长轮询 - http://en.wikipedia.org/wiki/Comet_%28programming%29

我应该补充一点,WebSockets 并不特定于 NodeJs。 WebSockets 是一种可以用任何语言实现的协议。有一些库可用于以各种不同的语言使用 WebSocket,包括 PHP,我假设您的服务器支持。

【讨论】:

  • 谢谢。它在有数百名访问者使用该应用程序的网站上可以正常工作吗?我可以忍受它不如 WebSockets 高效,只要它实际上可以与同时使用该应用程序的很多人一起工作。
  • 我看不出为什么不这样做。 Facebook 聊天使用长轮询,这似乎可以很好地扩展。当客户端不支持 web-sockets 时,Socket.io 实际上使用长轮询作为后备。
  • @lawls- 如果您依赖于 PHP 的共享托管计划,那么答案很可能是“不,它不适用于许多使用该应用程序的人。”即使您使用 Node.JS,您也可能会发现您超出了基本托管计划的容量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 2020-09-26
  • 2016-08-07
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多