会话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