需要做一个tcp接受数据以后 实时转发给前端的web页面
参照web-msg-sender例子来写
为什么socket推送前端2120收不到
代码该怎么改呢?
$sender_io = new SocketIO(2120);
$sender_io->on('connection', function($socket){
$socket->on('login', function ($uid)use($socket){
...
});
$socket->on('disconnect', function () use($socket) {
...
});
});
$web = new WebServer('http://0.0.0.0:2123');
$web->addRoot('localhost', __DIR__ . '/web');
$tcp_worker = new Worker("tcp://0.0.0.0:2500");
$tcp_worker->count = 10;
$tcp_worker->onMessage = function($connection, $data)
{
global $sender_io;
$sender_io->emit('new_msg', $data); //这里通过sender_io给前端页面推送 但是前端2120收不到
$connection->send('hello ' . $data);
};
Worker::runAll();
你的代码里面 WebServer 和 SocketIO是属于不同进程的,互相操作不到的。
我把代码改成这样的话
就可以监听到tcp端了
但是有个疑问:这样的话 会不会每个websocket链接都会去创建一个tcp进程?
如果前端有100个页面访问,就会建立了100个tcp监听进程?
不会