Установить Web-socket server client

Я использую:

  • Windows 10x64;
  • OpenSrver.

Я выполнил:
- я скачал вручную архив https://github.com/arthurkushman/php-wss
- я распаковал архив;
- в OpenSrver я создал папку: phpWssArthurkushmanGithub2\ в папке c:\openserver\domains\;
Результат: c:\openserver\domains\phpWssArthurkushmanGithub2\;
- я вручную скопировал папку src в папку
c:\openserver\domains\phpWssArthurkushmanGithub2\;
Папка содержит c:\openserver\domains\phpWssArthurkushmanGithub2\src\
Components\
Contracts\
Exceptions\
WebSocketClient.php
WebSocketServer.php
- я открыл консоль OpenSrver;
- я ввёл команду: cd c:\openserver\domains\phpWssArthurkushmanGithub2\
- я ввёл команду: composer require arthurkushman/php-wss
- результат: в папку C:\OpenServer\domains\phpWssArthurkushmanGithub2 добавились папки и файлы
src\
vendor\
composer.json
composer.lock

Вопросы.

  1. Как создать и где разместить файл запуска сервера?
  2. Как создать и где разместить файл запуска клиента?

введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения


Ответы (1 шт):

Автор решения: Eugene X

Вы серьёзно?

В первом-же примере на github вас не смущают эти 2 строчки?

$websocketServer = new WebSocketServer(new ServerHandler(), $config);
$websocketServer->run();

Какой ещё WebServer если это Standalone скрипт?

Дополняю ответ

Вырезка из bash_history

cd PHP
mkdir wsServer
cd wsServer/
composer init
composer require arthurkushman/php-wss
cd src/
vim index.php
php index.php

~/PHP/wsServer/src $ cat index.php

<?php
require_once("../vendor/autoload.php");

use WSSC\Contracts\ConnectionContract;
use WSSC\Contracts\WebSocket;
use WSSC\Exceptions\WebSocketException;
use WSSC\WebSocketServer;
use WSSC\Components\ServerConfig;

class ServerHandler extends WebSocket
{
    private $clients = [];

    public function __construct()
    {
    }

    public function onOpen(ConnectionContract $conn)
    {
        $this->clients[$conn->getUniqueSocketId()] = $conn;
        echo('Connection opend, clients: ' . count($this->clients) . "\n");
    }

    public function onMessage(ConnectionContract $recv, $msg)
    {
        echo('Received message:  ' . $msg . "\n");
        $recv->send($msg);
    }

    public function onClose(ConnectionContract $conn)
    {
        unset($this->clients[$conn->getUniqueSocketId()]);
        echo('close: ' . print_r($this->clients, 1) . "\n");
        $conn->close();
    }

    public function onError(ConnectionContract $conn, WebSocketException $ex)
    {
        echo 'Error occured: ' . $ex->printStack();
    }

    public function onPing(ConnectionContract $conn, $msg)
    {
        // TODO: Implement onPing() method.
    }

    public function onPong(ConnectionContract $conn, $msg)
    {
    }
}

$config = new ServerConfig();
$config->setClientsPerFork(2500);
$config->setStreamSelectTimeout(2 * 3600);

$webSocketServer = new WebSocketServer(new ServerHandler(), $config);

Заходим на https://www.piesocket.com/websocket-tester

Набераем в адресе

ws://localhost:8000

Тестируем...

ps: Боже, вы меня в могилу сведете…

→ Ссылка