慕的地6264312
2021-05-12 13:14:55
我正在編寫一個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
提交
取消