windows 系统下 workerman 在同一个运行窗口中开启多个 websocket 服务
开启多个 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 服务的更多相关文章
- Windows系统下如何在cmd命令窗口中切换Python2.7和Python3.6
针对在同一系统下我们可能安装多个版本的Python,毕竟Python2.7与Python3.6还是有不同的需求,但是在用Cmd命令窗口是我们可能默认的系统变量环境是其中一个版本,当我们需要在cmd命令 ...
- 在windows系统下打包linux平台运行的go程序
在windows系统下打包linux平台运行的go程序 1.先在main.go下打包成.exe可执行程序测试代码是否正确 //cd到main.go目录 go build //打包命令 如果打包成功则表 ...
- [记]Windows 系统下设置Nodejs NPM全局路径
Windows下的Nodejs npm路径是appdata,担心安装的node_modules越来越多,导致C盘满,所以参考别人的博文,将node_modules安装的默认目录修改一下. 参考Wind ...
- WINDOWS系统下四叶草CLOVER引导U盘制作
一.所需软件1.下载BootDiskUtility链接:http://pan.baidu.com/s/1bwBFyu 密码:glyk 2.下载Clover r3330 USB链接:http://pan ...
- Windows系统下的TCP参数优化(注册表\TCPIP\Parameters)
转自:https://blog.csdn.net/libaineu2004/article/details/49054261 Windows系统下的TCP参数优化 TCP连接的状态与关闭方式及其对 ...
- [转帖]整理:Windows系统下的奇技淫巧大汇总
整理:Windows系统下的奇技淫巧大汇总 https://blog.csdn.net/bat67/article/details/76381357 Win+home Crtl+home 还有 Win ...
- windows系统下简单nodejs安装及环境配置
相信对于很多关注javascript发展的同学来说,nodejs已经不是一个陌生的词眼,这里不想谈太多的nodejs的相关信息.只说一下,windows系统下简单nodejs环境配置 相信 ...
- windows 系统下git 的安装
在linux系统下,可以直接在命令窗口安装和使用git.但是,在windows系统下,想要达到同样的效果,可以安装git,使用git bash到达效果.具体安装步骤如下: 第一步:官网上下载git 网 ...
- windows系统下jenkins环境搭建与基本使用
一. windows 系统下搭建jenkins环境 1.1 jenkins环境搭建和构建job流程图 1.2 安装jdk JDK下载地址: http://www.oracle.com/technet ...
- [转]Windows系统下批量重命名文件(bat命令版本)
原文地址:https://jingyan.baidu.com/article/6dad507524bdcba122e36e44.html 我们有时候会遇到大量文件需要重命名,Windows系统下右键菜 ...
随机推荐
- Jupyter Notebook基本配置与使用
Jupyter Notebook,原名IPython Notbook,是IPython的加强网页版,一个开源Web应用程序 1.创建虚拟环境 mkvirtualenv ai 2.进入虚拟环境 work ...
- holiday08
第八天 管道 linux允许将 一个命令的输出 可以 通过管道 作为 另一个命令的输入 ls -lh | more 可以理解现实生活中的管子,管子一头塞东西进去,另一头取出来,这里 | 的左右分为两端 ...
- 基于rabbitmq之MQTT协议的智能家居
智能家居项目 智能可燃气体报警器 产品是一款可燃气体报警器,如果家中燃气泄露浓度到达一定阈值,报警器检测到并上传气体浓度值给后台,后台以电话.短信.微信等方式,提醒用户家中可能有气体泄漏. 用户还可能 ...
- spring的作用
Spring能有效地组织你的中间层对象,无论你是否选择使用了EJB.如果你仅仅使用了Struts或其他的包含了J2EE特有API的framework,你会发现Spring关注了遗留下的问题.Sprin ...
- Day15-static、抽象类、接口、内部类
static.抽象类.接口.内部类 一.static关键字详解 1.静态的变量/方法 package Demo02; //static public class Student { private s ...
- MySQL数据库架构&SQL注入漏洞
1.查找zblog数据库中有哪些表
- iOS自动化测试
学习步骤: 1.能够搭建iOS自动化测试所需要的环境 2.能够使用模拟器进行iOS自动化测试 3.能够使用真机进行iOS自动化测试 一.环境搭建 应用场景 想要进行iOS自动化测试,前提条件需要进行环 ...
- VUE安装环境及项目创建
Vue环境安装配置 安装git工具,便于在wind电脑上操作命令行,自行在网上下载安装,(可以不安装)使用cmd. 安装node,检查node安装是否成功,在git工具中输入node -v(如果成功的 ...
- vue项目安装淘宝镜像一直失败,解决办法
这个问题纠缠了我好几天,刚开始把npm,node卸载了重装,发现还是一样的问题,最后发现是权限不够,下面这个方法完美解决 失败原因:没有用管理员权限执行, 解决办法:找到安装nodejs安装的路径,再 ...
- 关于group by的一个问题
项目场景: 有时候,遇到数据库重复数据,需要将数据进行分组,并取出其中一条来展示,这时就需要用到group by语句.但是,如果mysql是高版本,当执行group by时,select的字段不属于g ...