• windows 系统下 workerman 在同一个运行窗口中开启多个 websocket 服务


    🎈 开启多个 ws 服务失败#

    • 正常情况下,如果你想开启多个 websocket 服务的话
    • 只要在一个文件中,输入 new Worker 两次,监听不同端口,使用 Worker::runAll() 命令即可
    • 但是你会发现在在 windows 中无法在一个文件中同时监听两个 websocket 服务,其他系统比如 Linux 是没有问题的
    • 会报 multi workers init in one php file are not support 错误,意思 windows 中禁止在同一个文件中开启多个 websocket 服务
    
    use Workerman\Worker;
    use Workerman\Connection\TcpConnection;
    require_once __DIR__ . '/vendor/autoload.php';
    
    $http_worker = new Worker("http://0.0.0.0:1234");
    $http_worker->onMessage = function(TcpConnection $connection, $data)
    {
        $connection->send('hello http');
    };
    
    $ws_worker = new Worker('websocket://0.0.0.0:2345');
    $ws_worker->onMessage = function(TcpConnection $connection, $data)
    {
        $connection->send('hello websocket');
    };
    
    // 运行所有Worker实例
    Worker::runAll();
    

    🎈 开启服务失败解决办法#

    • windows 版本的 workerman 不支持在同一个文件中实例化多个 Worker

      因此 windows 版本的 workerman 需要将多个 Worker 实例初始化放在不同的文件中才可以解决

    • 比如我们定义两个文件,一个 start_http.php,另一个是 start_websocket.php,在文件中分别加入以下代码,监听不同端口,然后使用 php 文件名 命令启动这两个文件即可

    
    use Workerman\Worker;
    use Workerman\Connection\TcpConnection;
    require_once __DIR__ . '/vendor/autoload.php';
    
    // 需要监听不同的端口
    $ws_worker = new Worker('websocket://0.0.0.0:xxxx');
    $ws_worker->onMessage = function(TcpConnection $connection, $data)
    {
        $connection->send('hello websocket');
    };
    
    // 运行所有Worker实例(这里只有一个实例)
    Worker::runAll();
    

    🎈 同一个窗口中运行#

    • 上面虽然可以解决运行多个 websocket 实例,但是你会发现有几个文件,就会有几个运行窗口
    • 如果开启的服务更多,窗口也会更多,那么如何在同一个窗口中运行启动多个服务呢
    • 那么如果要解决这个问题,我们就可以创建一个 init.bat 文件,然后在文件中加入以下代码,然后双击运行即可实现在同一个窗口中启动多个服务
    • /d: 表示切换目录
    • /b: 表示不打开新窗口,在当前窗口继续执行
    %切换到项目根目录%
    cd /d E:\xxxxxx
    
    %启动第一个服务%
    start /b php start_http.php
    
    %启动第二个服务%
    start /b php start_websocket.php
    
  • 相关阅读:
    安全测试目录内容合集
    【花雕体验】11 上手ESP32C3
    ESP8266-Arduino编程实例-CCS811数字气体传感器驱动
    软件定制vs现成,定制软件开发的优势
    2022年QT初体验以及未来趋势发展以及前景概要
    tomcat、nginx实现四层转发+七层代理+动静分离实验
    WIN10 查看端口占用情况
    如何卸载干净 IDEA(图文讲解)windows和Mac教程
    数据结构-------单链表
    hadoop集群搭建
  • 原文地址:https://www.cnblogs.com/tinygeeker/p/17226133.html