phpsocketIO中是否可以同时打开2个端口?

takumin
require_once __DIR__ . '/socket1.php';
require_once __DIR__ . '/socket2.php';

如题,根据demo中的方式(demo中一个是打开socket,一个是打开webservice),
我在socket1和socket2两个文件中各加入了一行代码如下:
socket1文件 $io1 = new SocketIO(3120);
socket2文件 $io2 = new SocketIO(3121);

但是在运行之后发现,只有3120端口被打开了。
如果屏蔽$io1的话,则3121端口单独可以被打开。

请问,是我的代码写法问题,还是本来就不支持这么做?

我原本想通过of命名空间的方法来区分2个不同功能的socket请求,但早上在论坛的提问中已经得到回复phpsocketio不支持of命名空间。因此我想到打开2个端口分别处理不同的请求,但又遇到了上述这个问题?
有哪位是否了解,还有没有其它更好的解决办法?

希望能得到大家的帮助,谢谢!

阅读 1957
3个回答

walkor

socket1.php 中如果提前调用了 Worker::runAll();,那么socket2.php文件中的代码将不会被执行。

如果是
$io1 = new SocketIO(3120);
Worker::runAll();
// Worker::runAll();下面的代码将不会被执行
$io2 = new SocketIO(3121);

正确流程是
$io1 = new SocketIO(3120);
$io2 = new SocketIO(3121);
Worker::runAll();

  • takumin 2018-06-21

    你好,我基本上是按照demo中的结构来写的。有一个start.php文件进行加载如:
    define('GLOBAL_START', true);
    require_once DIR . '/socket1.php';
    require_once DIR . '/socket2.php';
    Worker::runAll();

    并且在各socket*.php 中加入了判断代码
    if (!defined('GLOBAL_START')) {
    Worker::runAll();
    }
    但是这样仍然只执行第一个。

  • walkor 2018-06-22

    把代码打包发上来吧

  • takumin 2018-06-22

    示例代码已发上来,麻烦帮忙看一下,谢谢!

takumin

我的demo代码,请查看,谢谢!

  • 暂无评论
walkor

这里测试正常的,两个端口都在启动界面上有显示,并且都可以连

  • takumin 2018-06-22

    下午装了一个LINUX系统试了一下,在LINUX上可以同时启动2个端口,在WIN10系统上不行。谢谢!

  • walkor 2018-06-22

    windows系统不支持在一个文件中载入多个监听,workerman手册有写