【问题标题】:Get session in WebSocket server在 WebSocket 服务器中获取会话
【发布时间】:2017-12-14 13:12:46
【问题描述】:

我知道这个问题已经被问过几次了。我遵循了这些问题的答案,但我面临的问题仍然存在。

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

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

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

<?php

$message = explode(' ', $message);
$command = array_shift($message);

if ($command == 'JOIN') {
    session_id(trim($message[0]));
    session_start();

    $username = $_SESSION['username'];
?>

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

我错过了什么吗?

编辑:我已经让服务器返回 $message[0] 以确保它获得正确的会话 ID 并返回预期的内容。 (它为每个尝试连接的用户返回不同的 id)。

【问题讨论】:

  • 之后使用session_write_close关闭会话?
  • @gre_gor OMG,实际上似乎已经解决了!请将该评论转化为答案。你已经赢得了一些声望!

标签: php session websocket


【解决方案1】:

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

而且因为 WebSocket 服务器应该永远运行,所以您需要手动执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2013-05-19
    • 1970-01-01
    • 2020-07-27
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多