Tag: 棘轮

PHP Websocket在testing中validation用户(传递会话cookie)

我试图testing一个场景,一方面,匿名用户应该立即从WebSocket连接断开连接,另一方面,经过身份validation的用户应该停留在WebSocket连接中。 第一种情况很容易通过使用下面的代码来testing。 身份validation过程不起作用。 对于会话存储,我使用Cookie身份validation与数据库结合使用: Symfony PDO会话存储 。 这一切工作正常,但是当涉及到使用身份validation来testing所描述的行为时,我不知道如何在testing中对用户进行身份validation。 作为一个客户端,我使用PawlasynchronousWebsocket客户端。 这看起来如下: \Ratchet\Client\connect('ws://127.0.0.1:8080')->then(function($conn) { $conn->on('message', function($msg) use ($conn) { echo "Received: {$msg}\n"; }); $conn->send('Hello World!'); }, function ($e) { echo "Could not connect: {$e->getMessage()}\n"; }); 我知道,作为第三个参数,我可以将头信息传递给“连接”方法,但我无法find一种方式,以便客户端连接,并在ws握手期间cookie正确传递。 我想到了这样的事情: 通过创build身份validation令牌来validation客户端 我使用序列化用户在数据库的会话表中创build一个新条目 我将创build的cookie作为第三个parameter passing给connect方法 这是我认为会起作用的理论,但用户总是在websocket端匿名。 这里到目前为止的理论代码: // … use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class WebsocketTest extends WebTestCase { static $closed; protected function setUp() […]

PHP的棘轮websocket SSL连接?

我有一个棘轮聊天服务器文件 use Ratchet\Server\IoServer; use Ratchet\WebSocket\WsServer; use MyAppChat\Chat; require dirname(__DIR__) . '/vendor/autoload.php'; $server = IoServer::factory( new WsServer( new Chat() ) , 26666 ); $server->run(); 我使用Websocket连接ws ,它工作正常 if ("WebSocket" in window) { var ws = new WebSocket("ws://ratchet.mydomain.org:8888"); ws.onopen = function() { // Web Socket is connected. You can send data by send() method. ws.send("message to send"); }; […]