开启多个 ws 服务失败

  • 正常情况下,如果你想开启多个 websocket 服务的话
  • 只要在一个文件中,输入 new Worker 两次,监听不同端口,使用 Worker::runAll() 命令即可
  • 但是你会发现在在 windows 中无法在一个文件中同时监听两个 websocket 服务,其他系统比如 Linux 是没有问题的
  • 会报 multi workers init in one php file are not support 错误,意思 windows 中禁止在同一个文件中开启多个 websocket 服务
<?php
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 文件名 命令启动这两个文件即可

<?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

windows 系统下 workerman 在同一个运行窗口中开启多个 websocket 服务的更多相关文章

  1. Windows系统下如何在cmd命令窗口中切换Python2.7和Python3.6

    针对在同一系统下我们可能安装多个版本的Python,毕竟Python2.7与Python3.6还是有不同的需求,但是在用Cmd命令窗口是我们可能默认的系统变量环境是其中一个版本,当我们需要在cmd命令 ...

  2. 在windows系统下打包linux平台运行的go程序

    在windows系统下打包linux平台运行的go程序 1.先在main.go下打包成.exe可执行程序测试代码是否正确 //cd到main.go目录 go build //打包命令 如果打包成功则表 ...

  3. [记]Windows 系统下设置Nodejs NPM全局路径

    Windows下的Nodejs npm路径是appdata,担心安装的node_modules越来越多,导致C盘满,所以参考别人的博文,将node_modules安装的默认目录修改一下. 参考Wind ...

  4. WINDOWS系统下四叶草CLOVER引导U盘制作

    一.所需软件1.下载BootDiskUtility链接:http://pan.baidu.com/s/1bwBFyu 密码:glyk 2.下载Clover r3330 USB链接:http://pan ...

  5. Windows系统下的TCP参数优化(注册表\TCPIP\Parameters)

    转自:https://blog.csdn.net/libaineu2004/article/details/49054261 Windows系统下的TCP参数优化   TCP连接的状态与关闭方式及其对 ...

  6. [转帖]整理:Windows系统下的奇技淫巧大汇总

    整理:Windows系统下的奇技淫巧大汇总 https://blog.csdn.net/bat67/article/details/76381357 Win+home Crtl+home 还有 Win ...

  7. windows系统下简单nodejs安装及环境配置

      相信对于很多关注javascript发展的同学来说,nodejs已经不是一个陌生的词眼,这里不想谈太多的nodejs的相关信息.只说一下,windows系统下简单nodejs环境配置     相信 ...

  8. windows 系统下git 的安装

    在linux系统下,可以直接在命令窗口安装和使用git.但是,在windows系统下,想要达到同样的效果,可以安装git,使用git bash到达效果.具体安装步骤如下: 第一步:官网上下载git 网 ...

  9. windows系统下jenkins环境搭建与基本使用

    一. windows 系统下搭建jenkins环境 1.1 jenkins环境搭建和构建job流程图 1.2 安装jdk JDK下载地址:  http://www.oracle.com/technet ...

  10. [转]Windows系统下批量重命名文件(bat命令版本)

    原文地址:https://jingyan.baidu.com/article/6dad507524bdcba122e36e44.html 我们有时候会遇到大量文件需要重命名,Windows系统下右键菜 ...

随机推荐

  1. MSSQL 查看数据库所有的触发器

    SELECT object_name(a.parent_obj) as [表名] ,a.name as [触发器名称] ,(case when b.is_disabled=0 then '启用' el ...

  2. FFmpeg 摄像头采集

    FFmpeg 摄像头采集 extern "C" { #include "libavcodec/avcodec.h" #include "libavfo ...

  3. Kubernetes--创建Ingress资源

    创建Ingress资源 Ingress资源是基于HTTP虚拟主机或URL的转发规则,它在资源配置清单的spec字段中嵌套了rules.backend和tls等字段进行定义.下面的示例中定义了一个Ing ...

  4. Windows11安装Hadoop3.3.2

    Windows11安装Hadoop3.3.2 JDK 安装 Hadoop的Java版本https://cwiki.apache.org/confluence/display/HADOOP/Hadoop ...

  5. 【Android报错】FileNotFoundException open failed:文件路径 EPERM (Operation not permitted)外部存储至根目录报错,Android外部存储权限动态获取问题

    报错:FileNotFoundException open failed: XXXXXXX EPERM (Operation not permitted) 查了下,大概原因是因为权限的问题.(小白学A ...

  6. Vue Element使用第三方图标(iconfont阿里矢量图标库)

    在  www.iconfont.cn 中搜索图标并加入购物车然后添加至项目,编辑项目名称 然后将项目下载至本地解压后将如下文件复制移到到  src/assets/icon中, 并把iconfont.c ...

  7. 解决element-ui表格字段用expand展开行时其他字段也会同时展开的问题

    使用element-ui的table表格时,我们通常会在需要展开的列上通过设置 type="expand" 和 Scoped slot 可以开启展开行功能,但是渲染结果会出现其他未 ...

  8. angular-gridster2使用

    1.安装:npm install angular-gridster2 --save 2.引入 3.html代码 <div id="fullscreen" style=&quo ...

  9. ext表单合并行

    在js里加入方法 /*** 合并Grid的数据列* @param grid {Ext.Grid.Panel} 需要合并的Grid* @param colIndexArray {Array} 需要合并列 ...

  10. js中函数(方法)注释

    原文链接:https://blog.csdn.net/tianxintiandisheng/article/details/103764074 实例 /** * @function 处理表格的行 * ...