RatchetPHP没有用于新连接的WebSocket属性

时间:2017-08-21 23:47:31

标签: javascript php websocket ratchet

我尝试使用Ratchet访问Websocket服务器onOpen函数中的传入连接的查询参数。 official documentation和其他StackOverflow帖子都说您可以通过访问传递给该函数的WebSocket对象的ConnectionInterface属性来执行此操作:

public function onOpen(ConnectionInterface $conn) {
    $query = $conn->WebSocket->request->getQuery();
}

但是,传入的连接对象没有WebSocket属性。当我启动此服务器并与客户端连接时,会发出通知,这会导致在null对象上调用函数时出现致命错误:

  

PHP注意:未定义的属性:Ratchet \ Server \ IoConnection :: $ WebSocket

我使用的是PHP 7.0,而且我需要composer.json中的最新稳定版本:

"require": {
    "cboden/ratchet": "^0.3.6"
}

我将Chrome JS控制台中的客户端与直接从Hello World文档中复制的代码连接起来:

var conn = new WebSocket('ws://localhost:8080?foo=bar');
conn.onopen = function(e) {
    console.log("Connection established!");
};

如果它有用,我在$conn看到的唯一公共属性是:

bufferSize
stream
readable
writable
closing
loop
buffer
listenerse
decor

1 个答案:

答案 0 :(得分:4)

我有同样的问题,我发现:

 $querystring = $conn->httpRequest->getUri()->getQuery();
 parse_str($querystring,$queryarray);

允许您访问查询参数。