會話ID是可用在cookie中,通常命名爲PHPSESSID
(依賴於session.name
php.ini的設置,並且可以在執行過程中與session_name()
進行檢查和修改。
HTTP頭,包括餅乾,可用當用戶連接到WebSocket服務器時,負責的WS服務器應該存儲這些頭並通過用戶對象(或連接對象或任何對象存儲並唯一標識要通過其發送的資源消息返回到連接的客戶端)
另外,請注意,PHP會話系統在用戶會話打開時會鎖定它。由於WebSocket服務器設計爲連續運行,因此它們永遠不會自行解鎖會話。
因此,如果用戶的會話在WS中打開,那麼每個AJAX和正常的Web請求都會超時。該用戶根本無法使用您的網站。
此外,一次只能在腳本中打開一個會話。如果第二個用戶連接到WS服務器,則該用戶將有權訪問第一個用戶的所有會話信息,並且不訪問他們自己的會話。 (有點大,巨大的安全漏洞。)
因此,如果您打開一個會話,您必須必須儘快使用session_write_close()
關閉會議。
請參閱this previous question並回答WebSocket服務器中會話的具體實現,作爲在您的實現中尋找什麼的示例。 (注意:有些人可能會試圖將這個問題稱爲重複的問題,但我希望這兩個問題都能保持活躍,我認爲,這裏的這個問題應該是支持的問題,因爲它更一般化(不覆蓋了一個特定的WS服務器),並且由於該WS服務器的積極開發,最後一個問題中給出的建議將很快過時。)
您是否有session_start();在server.php? – Tobias
http://stackoverflow.com/questions/23230830/how-to-pass-session-variables-to-a-websocket-server –
是的,我開始session_start()開始會議; – tashi