symfony - 在 Ratchet websocket 连接中启动 session

标签 symfony session-cookies ratchet

我们已经构建了一个 Ratchet websocket 服务器,它为一个独立的客户端应用程序提供服务。服务器在端口 8080 上运行,而我们的 Symfony 应用程序在端口 80 上运行。让 session 在 websocket 服务器中工作至关重要,这样我们就可以唯一地识别每个客户端。
问题是 Ratchet 不会通过端口 8080 发送 set-cookie header 。

希望找到一种方法来响应 8080 上的升级请求发送 set-cookie header ,我尝试在 onOpen() 中启动一个新 session :

use Symfony\Component\HttpFoundation\Session\Session;

class ClientApi implements MessageComponentInterface {
    /**
     * @inheritDoc
     */
    public function onOpen(ConnectionInterface $conn) {
        $conn->Session = new Session();
        $conn->Session->start();
    }
    ...

但这并没有导致在对升级请求的响应中发回 set-cookie header 。

我们有一个解决方法,客户端必须首先在端口 80 上执行 GET 以获取 cookie,然后才能通过 8080 发送 websocket 升级请求,因此它可以随升级请求一起发送 cookie。我希望能像上面尝试的那样工作,这样客户端就不必打扰端口 80 上的 Web 应用程序。

我错过了什么吗?

最佳答案

我相信默认情况下创建一个新的 Symfony Session 类将使用全局变量。 Ratchet 提供 Session middleware class这将附加一个 Symfony Session 对象到每个 ConnectionInterface。

关于symfony - 在 Ratchet websocket 连接中启动 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16183917/

相关文章:

java - 如何从设置了 HttpOnly 标志的浏览器中删除 JSESSIONID cookie

php - 通过 React Timer 调用(Ratchet)WampServer 方法

php - 带有 Ratchet 的 Websockets 立即关闭

php - 用于树莓派的 Ratchet Websocket

php - Symfony 验证通过属性获取特定错误

javascript - Jquery:单击时更改按钮及其同级按钮的属性

mysql - 同时从多个表中选择数据按日期排序(流)

javascript - 如何在 react 之外但在同一域上重定向用户?

session - 将 session 标识符作为查询字符串参数传递

jquery - 响应内容类型与预期不同