实时客户信息同步,最佳做法和建议

时间:2019-05-12 02:10:32

标签: javascript php jquery ajax sockets

我正在编写一个PHP后端,JS / Jquery前端应用程序,该应用程序将允许用户在附近进行实时“通信”。至少那是希望,我的问题是我最好的行动方针是什么?我最好使用WebSocket在服务器和客户端之间发送数据,还是使用AJAX和某种计时器(x秒)更好。我对AJAX方式感到担心的是,每15-30秒有10个以上的客户机都在请求数据,这可能会增加服务器的负担。我需要使它接近实时,因此5分钟并不是很现实。

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

我对自己认为最好的事情感到mixed贬不一,我不想以一种方式开始做它,而在完成一半的工作后发现它是不安全的或可怕的。像这样的应用程序,我的最佳选择是什么?

2 个答案:

答案 0 :(得分:2)

以下是流行的可能解决方案的列表:

  1. 短轮询(您在AJAX中指的是
  2. 长轮询(也是AJAX,但请求数量不多)
  3. Websockets
  4. WebRTC

因此,如您所说,对于短轮询而言,它占用大量资源,因此我们将其从列表中删除。 对于长时间轮询,其思想是将请求发送到服务器,并且除非发生新事件(保留请求),否则服务器不会响应(但该请求很少被使用),但是在现代开发中很少使用。因此,如果您要与其他开发人员一起工作,那是一个错误的决定。

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

因此,您没有使用WebSockets了,是的,它们消耗ram但不消耗CPU。 ram便宜得多(并且它也不会消耗太多)。

关于安全性,可以将它们视为相等(WebRTC除外,因为它实际上是P2P通信,所以更好)

旁注:不要想太多了:)

以下一些资源可以为您提供帮助:

  1. https://webrtc.org/
  2. https://github.com/walkor/phpsocket.io //类似于Socket.io的PHP套接字库
  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很棒的民意测验,websocket和涵盖SSE的文章

答案 1 :(得分:0)

有一种方法可以制作RTC,RealTime App,只需使用Socket.io“ WebSocket”进行信号传递,然后再查看这些WebPage的完整视图:

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使用情况和所有详细信息的看法。