Page

[网络编程]swoole同时启动两个websocket服务端

719Anson18-02-25




环境:swoole1.9.23、centos6.8、php5.6、nginx1.12.1、easyswoole1.1.0


1、原生swoole实现:

// websocket服务端1
$websocket_server = new swoole_websocket_server("0.0.0.0", 9510);
$websocket_server->on('message', function (swoole_websocket_server $server, $frame) {
    $server->push($frame->fd, $frame->data);
});

// websocket服务端2
$websocket_server1 = $websocket_server->addlistener('0.0.0.0', 9511, SWOOLE_SOCK_TCP);
$websocket_server1->on('message', function (swoole_websocket_server $server, $frame) {
    $server->push($frame->fd, '1--'.$frame->data);
});

$websocket_server->start();


前端测试:


blob.png


blob.pngblob.pngblob.png


2、基于easyswoole的实现


①设置配置文件:更改监听地址为外网访问地址,端口为9510,SERVER_TYPE为websocket模式

blob.png


②在Event.php文件中的beforeWorkerStart添加如下代码:

// websocket服务端1:推送数据
$server->on("message",function (\swoole_websocket_server $server, \swoole_websocket_frame $frame) use ($redis, $prefix){
     $server->push($frame->fd,'服务端1');
});

// websocket服务端2: 接收数据
$websocket1 = $server->addlistener("0.0.0.0",9511,SWOOLE_SOCK_TCP);
$websocket1 ->on("message",function (\swoole_websocket_server $server, \swoole_websocket_frame $frame) use ($redis, $prefix){
     $server->push($frame->fd,'服务端2');
});



参考链接:

https://wiki.swoole.com/wiki/page/397.html

https://wiki.swoole.com/wiki/page/525.html

https://wiki.swoole.com/wiki/page/528.html





来自ansion博客 

http://www.tp0.top

2018-02-25 21:16:37