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
相关文章
|
16天前
|
安全 Linux iOS开发
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Gti 服务
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Gti 服务
36 0
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Gti 服务
|
6天前
|
算法 关系型数据库 测试技术
WHQL微软驱动签名方案,让驱动程序在Windows系统流畅运行
WHQL认证(Windows徽标认证)是微软设立的严格测试标准,旨在确保驱动程序的兼容性、稳定性和互通性。本文介绍了三种WHQL微软驱动签名方案:单系统签名、多系统签名和硬件兼容性测试方案,分别满足不同开发商的需求。通过WHQL认证,不仅能消除Windows安装警告,提升用户体验,还能获得“Designed for Windows”徽标授权,入列全球Windows Catalog及HCL产品表,提升品牌权威性和采购优先权。此外,访问微软OCA可获取错误反馈,助力产品质量改进。选择合适的签名方案,让驱动在Windows系统中流畅运行!
|
8天前
|
Windows
Windows系统云服务器配置多用户登录
本教程介绍了在Windows云服务器上配置远程桌面服务的详细步骤,包括安装桌面会话主机和远程桌面授权、允许多用户远程连接以及配置新用户并加入远程桌面用户组。通过添加角色和功能、设置组策略以及管理用户权限,实现多用户同时登录和远程访问。按照指引操作,可顺利完成服务器的远程访问配置,提升管理和使用效率。
25 0
|
2月前
|
监控 搜索推荐 开发工具
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
199 2
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
|
4月前
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
114 32
|
4月前
|
存储 负载均衡 Java
如何配置Windows主机MPIO多路径访问存储系统
Windows主机多路径(MPIO)是一种技术,用于在客户端计算机上配置多个路径到存储设备,以提高数据访问的可靠性和性能。本文以Windows2012 R2版本为例介绍如何在客户端主机和存储系统配置多路径访问。
273 13
如何配置Windows主机MPIO多路径访问存储系统
|
4月前
|
网络安全 Windows
Windows server 2012R2系统安装远程桌面服务后无法多用户同时登录是什么原因?
【11月更文挑战第15天】本文介绍了在Windows Server 2012 R2中遇到的多用户无法同时登录远程桌面的问题及其解决方法,包括许可模式限制、组策略配置问题、远程桌面服务配置错误以及网络和防火墙问题四个方面的原因分析及对应的解决方案。
271 4
|
27天前
|
安全 Unix 虚拟化
Windows 7 & Windows Server 2008 R2 简体中文版下载 (2025 年 2 月更新)
Windows 7 & Windows Server 2008 R2 简体中文版下载 (2025 年 2 月更新)
50 11
Windows 7 & Windows Server 2008 R2 简体中文版下载 (2025 年 2 月更新)
|
27天前
|
Unix 虚拟化 Windows
Windows Server 2025 中文版、英文版下载 (2025 年 2 月更新)
Windows Server 2025 中文版、英文版下载 (2025 年 2 月更新)
72 7
Windows Server 2025 中文版、英文版下载 (2025 年 2 月更新)

热门文章

最新文章