我運行PHP/MySQL和有一個非常複雜的HTML表,每一個細胞可以被編輯。他們有的只是文字,而點擊其他細胞帶來了選擇菜單,單選按鈕等簡單的方法來整合推我的表?
當用戶在表中的變化,所有的其他用戶需要刷新其瀏覽器的變化。
1) 是否有一種簡單的方法可以讓我的表「可推」,以便在編輯單元格時爲其他用戶顯示新內容?
或
2) 我可以運行每分鐘JavaScript或這樣,會在後臺獲取最新的內容,並將其與當前頁面,如果有什麼發生了變化進行更新?
謝謝你的想法
我運行PHP/MySQL和有一個非常複雜的HTML表,每一個細胞可以被編輯。他們有的只是文字,而點擊其他細胞帶來了選擇菜單,單選按鈕等簡單的方法來整合推我的表?
當用戶在表中的變化,所有的其他用戶需要刷新其瀏覽器的變化。
1) 是否有一種簡單的方法可以讓我的表「可推」,以便在編輯單元格時爲其他用戶顯示新內容?
或
2) 我可以運行每分鐘JavaScript或這樣,會在後臺獲取最新的內容,並將其與當前頁面,如果有什麼發生了變化進行更新?
謝謝你的想法
你描述的第一種方法叫做WebSockets。 WebSocket允許客戶端和服務器之間的雙向通信。它們使用消息進行通信,有效負載通常以JSON形式傳遞。客戶端(進行更新)會向服務器發送一條消息,說明該表與更新一起更新。然後,更新將被廣播給所有其他客戶,然後他們將重新放置桌子。
你所描述的第二種方法稱爲輪詢,其中一個Ajax請求將被週期性地由setInterval
/setTimeout
內部。
我總是會嘗試使用WebSockets現在。與使用輪詢技術相比,開銷要少得多。但是,當您使用PHP時,由於PHP會話的鎖定性質,我認爲第二種選擇會更有利。爲支持的WebSockets是不是在PHP的輝煌,你不得不使用第三方庫,如救護車。
你可以使用'服務器發送events' - 更容易獲得比'websockets'運行,將推動新的內容,通過'事件Stream',到客戶端 - 回調函數會再重新呈現HTML – RamRaider
@ RamRaider謝謝!我搜索了一些關於它的信息,但如果你知道一個好的入門指南,請告訴我。 – SeaBass
至於'SSE'回答我provded前一段時間顯示了服務器端代碼的基礎 - https://stackoverflow.com/questions/29480791/while-loops-for-server-sent-events-are-causing -page-to-freeze〜應該適度地直接在循環中實現你的代碼。 – RamRaider