在WebSocket服务器中获取会话

时间:2017-12-14 13:12:46

标签: php session websocket

我知道这个问题在几次之前就被问过了。我按照这些问题的答案,但我面临的问题仍然存在。

简单地说,我想从WebSocket服务器中的会话变量中获取用户名。根据我的理解,我需要获取会话ID并将其发送到每个消息的套接字。使用id读出会话。

发送会话ID:studentId
我确保this.socket.send('JOIN '+sessionID);包含正确的ID。这很好。

这是WebSocket服务器PHP的重要部分:

sessionID

问题是,它仍然只适用于加入服务器的第一个用户。任何其他用户将被拒绝连接,因为用户名已经在线。

我错过了什么吗?

编辑:我已经让服务器返回<?php $message = explode(' ', $message); $command = array_shift($message); if ($command == 'JOIN') { session_id(trim($message[0])); session_start(); $username = $_SESSION['username']; ?> 以确保它获得正确的会话ID并返回预期的内容。 (它为每个尝试连接的用户返回不同的id。)

1 个答案:

答案 0 :(得分:1)

PHP保持会话锁定,以防止并发写入,直到脚本结束或使用session_write_close手动关闭。

因为WebSocket服务器应该永远运行,所以你需要手动完成。