Возможно, PHP Websocket вообще не проходит через Cloudflare? - PullRequest
0 голосов
/ 26 июня 2018

В настоящее время я использую пример кода Ratchet PHP Websockets (http://socketo.me/docs/hello-world), и когда я пытаюсь запустить Websocket, он ничего не выводит, но показывает, что он "живой".

На моем веб-сайте я использую тот же код JS, что и в примере, за исключением использования wss://, поскольку мой веб-сайт проходит через Cloudflare SSL. Теперь мой вопрос: когда я пытаюсь подключиться к веб-сокету, в моих инструментах разработчика Chrome он просто постоянно показывает ожидающие и завершит работу, если я выключу веб-сокет.

Я не могу найти способ отладки того, что происходит с ним, я использую порты, которые позволяет мне использовать Cloudflare (т. Е. 8443), и я нахожусь в плане, где Websockets поддерживаются Cloudflare. Но я не могу найти никаких ответов об использовании Websockets через cloudflare, и когда я включаю error_reporting, он тоже ничего не выводит.

Это что-то с Cloudflare? Когда я набираю php runwebsocket.php это должно выводить что-то, кроме ничего?

Когда я использовал этот сценарий для веб-сокетов (https://github.com/ghedipunk/PHP-Websockets), он выводил бы, если клиент подключился к сокету, но все равно вызывал бы ту же проблему, когда он фактически не полностью подключался к нему.

РЕДАКТИРОВАТЬ: Когда я захожу на сайт тестирования Websocket Echo, когда я пытаюсь подключиться к своему сокету, он просто ничего не выводит.

** РЕДАКТИРОВАНИЕ № 2:

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

require('vendor/autoload.php'); // composer require cboden/ratchet

use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use AppSocket\Notifications;

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Notifications()
        )
    ),
    8443
);
$server->run();

Код для AppSocket\Notifications

<?php
namespace AppSocket;

use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;

class Notifications implements MessageComponentInterface {
    protected $clients;
    public function __construct() {
        $this->clients = new \SplObjectStorage;
    }
    public function onOpen(ConnectionInterface $conn) {
        $this->clients->attach($conn);
        echo "New connection! ({$conn->resourceId})\n";
    }
    public function onMessage(ConnectionInterface $from, $msg) {
        foreach ($this->clients as $client) {
            if ($from !== $client) {

                $client->send($msg);
            }
        }
        echo "Yay";
    }
    public function onClose(ConnectionInterface $conn) {

        $this->clients->detach($conn);
        echo "Connection {$conn->resourceId} has disconnected\n";
    }
    public function onError(ConnectionInterface $conn, \Exception $e) {
        echo "An error has occurred: {$e->getMessage()}\n";
        $conn->close();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...