Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Question] Listen multiple sockets #90

Open
abhinavgmfs opened this issue Mar 9, 2022 · 6 comments
Open

[Question] Listen multiple sockets #90

abhinavgmfs opened this issue Mar 9, 2022 · 6 comments

Comments

@abhinavgmfs
Copy link

Hi Walkor,

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

Can you send me the example.

#walkor/workerman#479

Thank you

@walkor
Copy link
Owner

walkor commented Mar 9, 2022

Please post your start_gateway.php content.

@abhinavgmfs
Copy link
Author

<?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();
}


@walkor
Copy link
Owner

walkor commented Mar 9, 2022

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

@abhinavgmfs
Copy link
Author

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);

@walkor
Copy link
Owner

walkor commented Mar 9, 2022

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

@abhinavgmfs
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants