【问题标题】:Ratchet Session storage棘轮会话存储
【发布时间】:2013-09-07 07:44:11
【问题描述】:

我是 Ratchet 和 Symfony 的新手。我正在努力熟悉它们。我使用了会话的替代方法,这很奇怪但有效。就是这样:

在 JS(原生 PHP 会话)中

name = "<?php echo $_SESSION['name']; ?>";
msg = elem.value;
socket.send(name+"|"+msg);

然后发送的参数是explode,带有分隔符|。它创建了两个字符串。一个是名称,另一个是 msg,然后发送到除发件人以外的所有连接。

list($name, $message) = explode("|", $msg);

我如何使用 Symfony Session,它会在用户输入时保存昵称,并且我的 Chat 类可以在 MyApp 命名空间中访问它?

我有 API 文档,但没有使用会话的简单示例。 API Documentation.

树:

/www
 |
 |___/src
 |    |
 |    |____/MyApp/
 |           |
 |           |___Chat.php // The Chat Class
 |
 |___/bin
 |     |
 |     |___chat-server.php
 |
 |___/vendor
 |
 |___/chat.php // <-- Chat Room, sending and receiving here
 |
 |___/index.php // <-- Ask for nickname here
 |
 |___/composer.phar
 |
 |___/composer.lock
 |
 |___/main.js // <-- Index HTML javascript
 |
 |___/socket.js // <-- Websocket handler for char.php
 |
 |___/main.css // <-- All style

【问题讨论】:

    标签: php session symfony ratchet


    【解决方案1】:

    控制器可以在会话中设置昵称:

    /**
     * @Route("/hello/{nickname}")
     */
    public function indexAction($nickname)
    {
        $session = $this->getRequest()->getSession();
        $session->set('nickname', $nickname);
    }
    

    要在您的聊天应用中检索昵称,

    public function onOpen(ConnectionInterface $conn) 
    {
        $nickname = $conn->Session->get('nickname');
    }
    

    【讨论】:

    • 嘿伙计!谢谢,但我还必须包括 Symfony 会话类,对吗? use ....
    • 它已经附加到控制器类(通过服务容器)和棘轮连接(通过棘轮)。
    • 嘿,你能用小菜鸟的语言告诉我吗?
    • 不确定你想让我说什么。 Symfony 自动设置会话并将其放入控制器中。它附加到控制器中的请求,以及您的 websocket Chat) 应用程序中的连接。
    • 让我用我的目录树编辑问题。所以,你可以了解我是如何设置的;)
    猜你喜欢
    • 2013-04-17
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多