GatewayWorker
GatewayWorker copied to clipboard
[Question] Listen multiple sockets
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
Please post your start_gateway.php content.
<?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();
}
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
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);
Just call Gateway::sendToClient($clientId1,$message, $raw);
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