【问题标题】:Real time client information synchronization, best practices and advice实时客户信息同步、最佳实践和建议
【发布时间】:2019-09-29 10:20:27
【问题描述】:

我正在编写一个 PHP 后端、JS/Jquery 前端应用程序,它将允许用户实时“交流”。至少这是希望,我的问题是我最好的行动方案是什么?我最好使用 WebSockets 在服务器和客户端之间发送数据还是使用 AJAX 和某种计时器(x 秒数)会更好。我对 AJAX 方式的担心是,让 10 多个客户端每 15-30 秒都请求数据可能会对服务器造成负担。我需要它接近实时,所以 5 分钟并不现实。

我想要做的一个例子是,如果我有 5 个用户都在一个页面上,并且用户 1 更新了他们的状态,我希望用户 2、3、4 和 5 尽快看到更新无需刷新。

我对我认为最好的方法感到困惑,我不想以一种方式开始,但在完成一半后发现它不安全或很糟糕。对于这样的应用程序,我的最佳途径是什么?

【问题讨论】:

    标签: javascript php jquery ajax sockets


    【解决方案1】:

    有一种方法可以制作 RTC、RealTime 应用程序,只需使用 Socket.io “WebSocket” 进行信号传输,然后再全面查看这些网页:

    https://bloggeek.me/

    https://www.html5rocks.com/en/tutorials/webrtc

    https://w3c.github.io/webrtc-pc/#rtcsignalingstate-enum

    https://www.w3.org/TR/mediacapture-streams/#legacy-interface-extensions

    我开始使用这本书 enter link description here 开发这项技术,它将打开您对 RTC 使用和所有详细信息的看法。

    【讨论】:

    • 我正在使用新使用的 liowebrtc 在 React 和 NodeJs、应用程序中使用!
    【解决方案2】:

    这里列出了一些流行的可能解决方案:

    1. 短轮询(您在 AJAX 中指的是什么
    2. 长轮询(AJAX 也是,但请求不多)
    3. 网络套接字
    4. WebRTC

    因此,对于您所说的简短轮询,它会消耗大量资源,因此让我们将其从列表中删除。 至于长轮询,它的想法是向服务器发送请求,除非发生新事件(保留请求),否则服务器不会响应,但它在现代开发中很少使用。因此,如果您要与其他开发人员合作,这是一个糟糕的决定。

    对于 WebRTC,浏览器兼容性不是很好,仍然是 W3C 的草案。

    因此,您被排除在 WebSockets 之外,是的,它们消耗内存而不是 CPU。 ram 便宜得多(而且消耗也不大)。

    至于安全性,它们可以被认为是平等的(WebRTC除外,因为它实际上是P2P通信更好)

    旁注:不要想太多:)

    这里有一些资源可以帮助你:

    1. https://webrtc.org/
    2. https://github.com/walkor/phpsocket.io //类似于 Socket.io 的 PHP Socket 库
    3. https://socket.io
    4. What are the realtime communication protocols available for the web? 协议列表
    5. https://codeburst.io/polling-vs-sse-vs-websocket-how-to-choose-the-right-one-1859e4e13bd9 很棒的轮询、websockets 和涵盖 SSE 的文章

    【讨论】:

    • 谢谢你,我将通读这些。我担心轮询会杀死我的服务器,因为可能有 30-60 人同时使用它。我在考虑套接字,但我只是想确保在安全方面我没有遗漏一些明显的东西。
    • 很高兴能帮上忙!
    猜你喜欢
    • 2012-03-06
    • 2021-08-05
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多