php - Ratchet session 存储

标签 php session symfony ratchet

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

在 JS(原生 PHP session )中

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

发送的参数是 explode带分隔符 | .它创建了两个字符串。一个是名称,另一个是 msg,然后将其发送到除发件人之外的所有连接。
list($name, $message) = explode("|", $msg);

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

我有 API 文档,但没有使用 session 的简单示例。 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

最佳答案

Controller 可以在 session 中设置昵称:

/**
 * @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');
}

关于php - Ratchet session 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18671031/

相关文章:

php - 在 PHP 中跨服务器传输 session

node.js - 每次 React 向 Express 发送请求时,都会生成一个新的 session

symfony - 在 Symfony 2/Doctrine 2 中使用 MappedSuperclass 字段不持久?

symfony - FOS 和 Fr3d ldap 与 symfony2.1 捆绑

symfony - Doctrine 缓存无法识别的选项错误

PHP Xpath 抓取可能的命名空间问题

php - mysql WHERE子句为空时,返回所有行

python - 你如何在 CherryPy 中使用 cookie 和 HTTP 基本身份验证?

php - 尝试将单引号放在单引号 postgresql php 中

php - 使用不同的 ID 分隔数据 - mysql 或 phpexcel