Skip to content

Phpdaemon benchmark and sending data from php client to web client #293

@Shkarbatov

Description

@Shkarbatov

Hi all!

I create WebSocket server on phpdaemon:

Web client part:

<script>
    var ws = new WebSocket('ws://site.ll:3333/?user=tester01');
    ws.onmessage = function(evt) { alert(evt.data); };
    ws.onopen = function (event) { ws.send('tester01'); }
</script>

Worker part:

namespace PHPDaemon\Applications;

class WSEcho extends \PHPDaemon\Core\AppInstance
{
    public function onReady()
    {
        $appInstance = $this;

        \PHPDaemon\Servers\WebSocket\Pool::getInstance()->addRoute("/", function ($client) use ($appInstance)
        {
            return new WsEchoRoute($client, $appInstance);
        });
    }
}

class WsEchoRoute extends \PHPDaemon\WebSocket\Route
{
    public function onHandshake()
    {
        \PHPDaemon\Core\Daemon::log("Connected.");
    }

    public function onFrame($data, $type)
    {
        if ($type === "STRING")
        {
            \PHPDaemon\Core\Daemon::log("Receive data «{$data}».");
            $this->client->sendFrame($data);
        }
    }

    public function onFinish()
    {
        \PHPDaemon\Core\Daemon::log("Finish connection.");
    }
}

Config part:

max-workers     1;
min-workers     8;
start-workers   1;
max-idle        0;

Pool:Servers\WebSocket
{
        listen 'tcp://0.0.0.0';
        port 3333;
}

WSEcho
{
}

It is work :)

And I have 2 question:

1. I receive disconnect each 2 min after connect.
Is it normal?

2. Can I somehow connect from my php code to WebSocket server for sending message
Like next:

$localsocket = 'ws://127.0.0.1:3333';
$user = 'tester01';
$message = 'test';
$instance = stream_socket_client($localsocket);
fwrite($instance, json_encode(['user' => $user, 'message' => $message])  . "\n");

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions