【问题标题】:Symfony2 and ClankBundle: cannot share sessionSymfony2 和 ClankBundle:无法共享会话
【发布时间】:2015-04-23 08:17:17
【问题描述】:

我正在使用 Symfony2 和 ClankBundle 来实现 WebSocket 功能。 我按照here (PdoSessionHandler)here (Clank Session sharing) 报告的说明进行操作,但仍然无法获取我存储在会话中的信息。

我仍在使用 Symfony 提供的在 http://127.0.0.1:8000 上运行的内置调试服务器

我的参数.yml

parameters:
    clank_host: 127.0.0.1
    clank_port: 8080

我的 config.yml

framework:
    session:
        handler_id: session.handler.pdo

clank:
    web_socket_server:
        port: "%clank_port%"
        host: "%clank_host%"
    session_handler: session.handler.pdo

在控制器中:

    $session = $this->get('session');
    $session->set('user_token', $user->getId() );

在主题服务中:

public function onSubscribe(Conn $conn, $topic)
{
    file_put_contents('debug.txt', "onSubscribe" .$conn->resourceId . " connected" . " ".$conn->Session->get('user_token'). PHP_EOL, FILE_APPEND | LOCK_EX);
    // ...
}

以及页面中的脚本:

var myClank = Clank.connect("ws://127.0.0.1:8080");

myClank.on("socket/connect", function(session){
    console.log("Successfully Connected!");
    session.subscribe("topicservice/channel", function(uri, payload){
        console.log("Received message");
    });
    // ...
})

还是有点,当用户连接和订阅时,$conn->Session->get('user_token') 返回 null。

关于我做错了什么有什么想法吗? 提前谢谢你

【问题讨论】:

    标签: symfony session websocket ratchet


    【解决方案1】:

    我发现了问题所在。

    Symfony 内置服务器和 clank 服务器都在 127.0.0.1 上运行,但我是从浏览器访问 localhost

    似乎这些被认为是两个不同的域。很高兴知道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 2014-10-13
      • 2010-12-17
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多