【发布时间】: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