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
相关文章
|
3月前
|
存储 消息中间件 NoSQL
体育赛事直播系统中基于 WebSocket 实现的聊天室与弹幕模块设计与实践
本文详解东莞梦幻网络科技体育直播系统中「聊天室+弹幕」模块的实时通信技术实现,涵盖 WebSocket 架构、连接池管理、多房间逻辑、消息转发与并发控制等核心要点,助力构建高并发、低延迟的直播互动体验。
|
3月前
|
Linux 虚拟化 iOS开发
VMware Fusion 13.6.4 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式
VMware Fusion 13.6.4 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式
371 3
|
2月前
|
Ubuntu Linux Windows
windows11系统安装ubuntu系统详细步骤
安装后,您可以直接从商店启动应用程序来源
449 0
|
3月前
|
JSON JavaScript 前端开发
实现ROS系统的Websocket传输,向Web应用推送sensor_msgs::Image数据
WebSocket协议具有低延迟和高实时性的特性,适用于实时数据推送。但是,它也依赖于网络条件,因此,在通过WebSocket发送数据时,保证网络稳定性也是重要的。以上步骤为建立基本的WebSocket传输提供了框架,并可以根据实际需求进行调整和优化。
233 0
|
4月前
|
Ubuntu Linux 数据安全/隐私保护
Windows中安装WSL 2和Ubuntu系统的教程
回看这一路,有趣吧?你已经跨界成为了一个Windows和Linux的桥梁。期待在代码的世界里,把一切玩得风生水起!
198 13
|
3月前
|
持续交付 Windows
如何使用Sysprep准备Windows系统并使用自动应答
通过Sysprep准备Windows系统,可实现SID重置与系统定制。进入Sysprep后,可安装软件、设置默认桌面文件,并使用Windows SIM创建应答文件以实现自动化部署。适用于系统克隆与批量部署场景。
|
5月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
2088 0