【问题标题】:Way to send information between two web browser clients?在两个 Web 浏览器客户端之间发送信息的方式?
【发布时间】:2013-03-19 18:59:02
【问题描述】:

我对以下问题进行了大量研究,但最终都指向了我无法使用的 Websocket,因为我的主机不允许命令行或 ssh。我也尝试过 postMessage(data, targetDomain) 技术,但这也不完全是我想要去的地方。

这是我想做的:

从一个人执行 javascript 到该页面上的其他用户,而无需重新加载它或任何东西。

示例:用户单击页面上的一个按钮,它会发送一个 JavaScript 代码,该代码会自动在每个其他侦听器页面上执行一个函数。有点像你可以说的聊天功能,但可能不那么密集?

这是我第一次探索这个领域,所以我对这些概念有些困惑。我已经阅读了提供类似套接字使用的程序的多个文档,但这里并没有真正的运气。 (就像我说的,由于我的主机,我不能真正使用套接字)。

感谢任何帮助,谢谢!

【问题讨论】:

  • Ajax 和长轮询可能是要走的路。
  • 您需要在服务器上使用 something 来代理消息。您不能直接在浏览器之间进行通信。
  • 也许你需要(就像@Pitchinnate 说的那样)彗星编程(长轮询)之类的东西,这是一种不好的做法,或者切换到另一台主机以便你可以使用套接字......
  • 是的,我一直在尝试使用 $.ajax GET 和 mysql 做一些事情,但如果我的网站变得更大,我会讨厌继续发送这么多 sql 请求。 && 谢谢,我会研究长轮询。似乎很难找到一个允许命令行的主机(大多数共享服务器不允许)并且它在预算费用中。
  • @Gosre 这就是为什么你应该将 ajax 与长轮询结合起来,这样当有新信息时只有一个 GET。

标签: php javascript ajax websocket


【解决方案1】:

如果您在一个不允许 WebSockets 的托管平台上,那么您可以将实时通信层外包给 hosted realtime service我为 Pusher 工作)。

托管服务往往具有免费层,因此取决于您要达到的目标,这可能就足够了。如果没有,请联系他们,说明您的应用和您的情况,他们可能会提供帮助。

如果你想使用self hosted solution,那么你可能需要使用基于 HTTP 的东西。但是,同样,如果您使用的是小型共享托管平台,这可能会占用大量资源,并且您的托管服务可能会让您失望。

如果更新不是那么频繁,您可以在相当长的时间间隔内使用标准 AJAX 轮询。不过,听起来您想避免这种情况。

就个人而言,我建议您使用托管服务,因为 PHP 本身就很难实现您想要实现的目标,因为它是在考虑请求/响应的情况下构建的。

相关:Realtime websocket-like behavior possible on Heroku?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    相关资源
    最近更新 更多