Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 在棘轮websocket连接中启动会话_Symfony_Session Cookies_Ratchet - Fatal编程技术网

Symfony 在棘轮websocket连接中启动会话

Symfony 在棘轮websocket连接中启动会话,symfony,session-cookies,ratchet,Symfony,Session Cookies,Ratchet,我们构建了一个Ratchet websocket服务器,为独立的客户端应用程序提供服务。服务器在端口8080上运行,我们的Symfony应用程序在端口80上运行。在websocket服务器中使用会话非常重要,这样我们就可以唯一地标识每个客户机。 问题是Ratchet没有通过端口8080发送设置cookie头 我试图在onOpen()中启动一个新会话,希望找到一种方法来发送set-cookie头以响应8080上的升级请求: 但这并没有导致在对升级请求的响应中发回set cookie头 我们有一个变

我们构建了一个Ratchet websocket服务器,为独立的客户端应用程序提供服务。服务器在端口8080上运行,我们的Symfony应用程序在端口80上运行。在websocket服务器中使用会话非常重要,这样我们就可以唯一地标识每个客户机。 问题是Ratchet没有通过端口8080发送设置cookie头

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

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

我们有一个变通方法,客户机在通过8080发送websocket升级请求之前,必须首先在端口80上执行GET操作以获取cookie,因此它可以随升级请求一起发送cookie。我希望能像上面尝试的那样工作,这样客户端就不必麻烦端口80上的web应用程序了


我遗漏了什么吗?

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

对。但是有没有办法让Ratchet向客户端发送一个set cookie头呢?我认为Ratchet不需要做set cookie。您的网站可能已经创建了会话cookie,Ratchet将读取该cookie来填充会话数据。也就是说,我认为浏览器安全问题会阻止它工作;不同的端口被视为单独的域,因此您无法将cookie传回第四个端口。我不需要与web应用共享cookie。我很乐意让Ratchet自己做饼干。
use Symfony\Component\HttpFoundation\Session\Session;

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