2015-04-23 56 views
2

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

我仍在使用内置的上http://127.0.0.1:8000

我parameters.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 

运行在控制器通过Symfony的提供调试服务器:

$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。

关于我在做什么的错误? 谢谢你提前

回答

0

我发现问题是什么。

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

看来这些被认为是两个不同的领域。很高兴知道。