GatewayWorker icon indicating copy to clipboard operation
GatewayWorker copied to clipboard

[Question] Listen multiple sockets

Open abhinavgmfs opened this issue 2 years ago • 6 comments

Hi Walkor,

How can we do the multiple socket like workerman in gateway worker solution.

Can you send me the example.

#https://github.com/walkor/workerman/issues/479

Thank you

abhinavgmfs avatar Mar 09 '22 15:03 abhinavgmfs

Please post your start_gateway.php content.

walkor avatar Mar 09 '22 15:03 walkor

<?php 
use Workerman\Worker;
use GatewayWorker\Gateway;
use Workerman\Autoloader;

// gateway 进程
$gateway = new Gateway("websocket://" . SOCKET_SERVER_IP . ":" . SOCKET_PORT);

$gateway->name = GATEWAY_NAME;

$gateway->count = 1;

$gateway->lanIp = SOCKET_LAN_IP;

$gateway->startPort = SOCKET_START_PORT;

$gateway->registerAddress = SOCKET_REGISTER_ADDRESS;

if(!defined('GLOBAL_START'))
{
    Worker::runAll();
}


abhinavgmfs avatar Mar 09 '22 16:03 abhinavgmfs

Create start_gateway2.php which like this.

<?php 
use Workerman\Worker;
use GatewayWorker\Gateway;
use Workerman\Autoloader;

//  == here === 
$gateway = new Gateway("websocket://" . SOCKET_SERVER_IP . ":" . SOCKET_PORT + 1);

$gateway->name = GATEWAY_NAME;

$gateway->count = 1;

$gateway->lanIp = SOCKET_LAN_IP;

// === here ===
$gateway->startPort = SOCKET_START_PORT + 200;

$gateway->registerAddress = SOCKET_REGISTER_ADDRESS;

if(!defined('GLOBAL_START'))
{
    Worker::runAll();
}

Restart

walkor avatar Mar 09 '22 16:03 walkor

Thank you!

How can we send message from gateway 2 to client connected in gateway 1

Example: If clientId = 1 is connected to Gateway1 and clientId = 2 is connected to Gateway2

then how can we send message to clinetid = 1 from client connected in gateway2

Gateway::sendToClient($clientId, $message, $raw);

abhinavgmfs avatar Mar 09 '22 16:03 abhinavgmfs

Just call Gateway::sendToClient($clientId1,$message, $raw);

walkor avatar Mar 09 '22 23:03 walkor

Thank you!

But all the business logic loads still on one process of business worker and we are bound to use only one business worker process due to internal design of the project that stores arrays inside the business logic.

Any idea how we can handle this?

Thank you

abhinavgmfs avatar Mar 14 '22 11:03 abhinavgmfs