我正在编写一个PHP后端,JS / Jquery前端应用程序,该应用程序将允许用户近乎实时地“通信” 。至少那是希望,我的问题是我最好的行动方针是什么?我最好使用WebSocket在服务器和客户端之间发送数据,还是使用AJAX和某种计时器(x的秒数)更好。我对AJAX方式感到担心的是,每15-30秒有10个以上的客户机都在请求数据,这可能会使服务器负担重。我需要使它接近实时,因此5分钟实际上是不现实的。我要尝试执行的一个示例是,如果我在一个页面上共有5个用户,并且用户1更新了他们的状态,我希望用户2、3、4和5尽可能快地看到更新,而不必刷新。我对自己认为最好的事情感到mixed贬不一,我不想以一种方式开始做,而在完成一半后发现它是不安全的或可怕的。这样的应用程序最好的选择是什么?
2 回答

梵蒂冈之花
TA贡献1900条经验 获得超5个赞
以下列出了可能的流行解决方案:
简短轮询(您在AJAX中指的是
长轮询(也是AJAX,但请求太多)
网络套接字
WebRTC
因此,如您所说,对于短轮询而言,它占用了大量资源,因此我们将其从列表中删除。对于长轮询,其思想是将请求发送到服务器,并且除非发生新事件(保留请求),否则服务器不会响应(但此请求很少在现代开发中使用)。因此,如果您要与其他开发人员一起工作,那将是一个错误的决定。
对于WebRTC,浏览器兼容性不是很好,在W3C中仍然是草稿。
因此,您不用使用WebSockets,是的,它们消耗ram但不消耗CPU。ram便宜得多(并且它也不会消耗太多)。
至于安全性,可以认为它们是相等的(WebRTC除外,因为它实际上是P2P通信,所以更好)
旁注:不要想太多了:)
以下是一些可以帮助您的资源:
https://github.com/walkor/phpsocket.io//类似于Socket.io的PHP套接字库
Web上有哪些实时通信协议?协议清单
https://codeburst.io/polling-vs-sse-vs-websocket-how-to-choose-the-right-one-1859e4e13bd9很棒的民意测验,websocket和涵盖了SSE
添加回答
举报
0/150
提交
取消