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

简介: 用最简洁的方式运行服务,优雅永不过时

🎈 开启多个 ws 服务失败

  • 正常情况下,如果你想开启多个 websocket 服务的话
  • 只要在一个文件中,输入 new Worker 两次,监听不同端口,使用 Worker::runAll() 命令即可
  • 但是你会发现在在 windows 中无法在一个文件中同时监听两个 websocket 服务,其他系统比如 Linux 是没有问题的
  • 会报 multi workers init in one php file are not support 错误,意思  windows 中禁止在同一个文件中开启多个 websocket 服务
<?phpuseWorkerman\Worker;
useWorkerman\Connection\TcpConnection;
require_once__DIR__ . '/vendor/autoload.php';
$http_worker=newWorker("http://0.0.0.0:1234");
$http_worker->onMessage=function(TcpConnection$connection, $data)
{
$connection->send('hello http');
};
$ws_worker=newWorker('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 文件名 命令启动这两个文件即可
<?phpuseWorkerman\Worker;
useWorkerman\Connection\TcpConnection;
require_once__DIR__ . '/vendor/autoload.php';
// 需要监听不同的端口$ws_worker=newWorker('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
相关文章
|
1天前
|
Oracle Java 关系型数据库
windows 下 win11 JDK17安装与环境变量的配置(配置简单详细,包含IJ中java文件如何使用命令运行)
本文介绍了Windows 11中安装JDK 17的步骤,包括从官方网站下载JDK、配置环境变量以及验证安装是否成功。首先,下载JDK 17的安装文件,如果没有Oracle账户,可以直接解压缩文件到指定目录。接着,配置系统环境变量,新建`JAVA_HOME`变量指向JDK安装路径,并在`Path`变量中添加。然后,通过命令行(cmd)验证安装,分别输入`java -version`和`javac -version`检查版本信息。最后,作者分享了如何在任意位置运行Java代码,包括在IntelliJ IDEA(IJ)中创建的Java文件,只需去掉包声明,就可以通过命令行直接运行。
15 0
|
3天前
|
定位技术 开发者 UED
基于位置的服务中,WebSocket有哪些用途?
【5月更文挑战第3天】基于位置的服务中,WebSocket有哪些用途?
17 6
|
3天前
|
监控 安全 虚拟化
深入浅出:NSSM封装Windows服务工具的使用与介绍
深入浅出:NSSM封装Windows服务工具的使用与介绍
15 3
|
4天前
|
网络协议 数据安全/隐私保护 iOS开发
苹果MacOS电脑使用内网穿透轻松远程桌面本地Windows系统电脑
苹果MacOS电脑使用内网穿透轻松远程桌面本地Windows系统电脑
|
5天前
|
关系型数据库 MySQL PHP
如何在Windows安装Wnmp服务并实现固定地址远程访问
如何在Windows安装Wnmp服务并实现固定地址远程访问
|
5天前
|
Windows
Windows系统下安装分布式事务组件Seata
Windows系统下安装分布式事务组件Seata
|
8天前
|
Windows
Windows 系统下安装
在Windows上安装Julia,访问[julialang.org/downloads](https://julialang.org/downloads/)下载安装程序。64位版本仅适用于64位系统。安装时持续点击Next,记得勾选&quot;Add Julia To PATH&quot;以添加到环境变量。完成后,可在终端直接运行Julia命令。默认安装路径如:C:\Users\BAIDU\AppData\Local\Programs\Julia 1.7.2。
|
13天前
|
人工智能 安全 机器人
AI电销机器人系统源码部署:freeswitch安装Windows
在Windows上安装FreeSWITCH:访问官网下载安装程序,运行并按提示安装;选择安装路径和组件;等待安装完成;配置FreeSWITCH,修改设置;启动服务;测试其功能;如遇问题,参考官方文档或进行调试故障排除。记得定期更新维护以保证稳定安全。
|
16天前
|
网络协议 安全 文件存储
Windows如何使用IIS服务搭建本地WebDAV网站并实现远程管理储存文件
Windows如何使用IIS服务搭建本地WebDAV网站并实现远程管理储存文件
|
16天前
|
网络协议 安全 测试技术
Windows安装禅道系统结合Cpolar实现公网访问内网BUG管理服务
Windows安装禅道系统结合Cpolar实现公网访问内网BUG管理服务