windows 使用 workerman

简单示例

workerman从3.5.3版本开始已经能够同时支持linux系统和windows系统。

1、需要PHP>=5.4,并配置好PHP的环境变量。

2、Windows版本的Workerman不依赖任何扩展。

3、安装使用以及使用限制这里。

4、由于Workerman在Windows下有诸多使用限制,所以正式环境建议用Linux系统,windows系统仅建议用于开发环境。

官方文档

workerman 手册

1. 安装 在一个空目录中运行

cmd 运行以下命令

composer require workerman/workerman
2. 实例一、使用HTTP协议对外提供Web服务
2.1 创建start.php文件
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';// 创建一个Worker监听2345端口,使用http协议通讯
$http_worker = new Worker("http://0.0.0.0:2345");// 启动4个进程对外提供服务
$http_worker->count = 4;// 接收到浏览器发送的数据时回复hello world给浏览器
$http_worker->onMessage = function(TcpConnection $connection, Request $request)
{// 向浏览器发送hello world$connection->send('hello world');
};// 运行worker
Worker::runAll();

命令行运行

php start.php start

成功状态如下图

浏览器地址栏输入

http://127.0.0.1:2345/

3. 使用WebSocket协议对外提供服务
3.1 创建ws_test.php文件
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';// 注意:这里与上个例子不同,使用的是websocket协议
$ws_worker = new Worker("websocket://0.0.0.0:2000");// 启动4个进程对外提供服务
$ws_worker->count = 4;// 当收到客户端发来的数据后返回hello $data给客户端
$ws_worker->onMessage = function(TcpConnection $connection, $data)
{// 向客户端发送hello $data$connection->send('hello ' . $data);
};// 运行worker
Worker::runAll();

命令行运行

 php .\ws_test.php start

打开浏览器浏览器,按F12打开调试控制台,在Console一栏输入(或者把下面代码放入到html页面用js运行)

websocket 协议的程序就好了

4. 群发消息 (当前进程的所有客户)
4.1 ws_test.php 的php内容
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';// 注意:这里与上个例子不同,使用的是websocket协议
$ws_worker = new Worker("websocket://0.0.0.0:2000");// 启动4个进程对外提供服务
$ws_worker->count = 1;// 当收到客户端发来的数据后返回hello $data给客户端
$ws_worker->onMessage = function(TcpConnection $connection, $data) use($ws_worker)
{// 向客户端发送hello $data// echo $data . PHP_EOL;// $connection->send('hello ' . $data);// dd($ws_worker);// 向当前进程的所有客户端发送$dataforeach($ws_worker->connections as $connection){$connection->send($data);}
};
function dd($data)
{var_dump($data);exit;
}
// 运行worker
Worker::runAll();

然后运行 

 php .\ws_test.php start
4.2 index.html 的内容
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body></body>
</html>
<script>ws = new WebSocket("ws://127.0.0.1:2000");ws.onopen = function() {console.log("连接成功");ws.send('tom');console.log("给服务端发送一个字符串:tom");};ws.onmessage = function(e) {console.log("收到服务端的消息:" + e.data);};
</script>
4.3 然后在浏览器 打开两个标签页访问这个 index.html的文件

第一个页面

第二个页面

4.4 做完上面两步之后再看1页面里的控制台 会发现这个收到了两次消息

或者 在控台 输入 一下  ws.send('tom122'); 然后回车

ws.send('tom122');

然后去另外一个页面看 就会发现看到了刚刚在另一个控制台发送的内容

未完 待续...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/701262.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端崽的java study笔记

文章目录 basic1、sprint boot概述2、sprint boot入门3、yml 配置信息书写和获取 持续更新ing~ basic 1、sprint boot概述 sprint boot特性&#xff1a; 起步依赖&#xff08;maven坐标&#xff09;&#xff1a;解决配置繁琐的问题&#xff0c;只需要引入sprint boot起步依赖的…

能否直接上手 Qt ?——看完 C++ 课本后怎么做?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Qt的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;如果你已经阅读了 C 课本&#xff0c;但仍然感到…

6、Qt—Log4Qt使用小记1

开发平台&#xff1a;Win10 64位 开发环境&#xff1a;Qt Creator 13.0.0 构建环境&#xff1a;Qt 5.15.2 MSVC2019 64位 一、Log4Qt简介 Log4Qt是使用Trolltech Qt Framework的Apache Software Foundation Log4j包的C 端口。它旨在供开源和商业Qt项目使用。所以 Log4Qt 是Apa…

(done) 关于 pytorch 代码里常出现的 batch_first 到底是啥?

参考文章&#xff1a;https://pytorch.org/docs/stable/generated/torch.nn.utils.rnn.pad_sequence.html 首先看参考文章里的解释&#xff0c;如下图 从文章描述来看&#xff0c;当 batch_first True 时&#xff0c;输出的张量的 size 是 B x T x *。当 batch_first False…

近屿OJAC的大模型工程师训练营——0基础人士加入AIGC领域的捷径!

近年来&#xff0c;随着数据快速积累、算力性能提升和算法效力增强&#xff0c;人工智能不仅能与人类进行互动&#xff0c;还可以写作、编曲、绘画、视频制作等。如近期爆火的文生视频模型Sora&#xff0c;首次由AI生成了长达1分钟的多镜头长视频&#xff0c;镜头堪比电影&…

计算机组成原理(超详解!!) 第八节 总线系统

1.总线的概念和结构形态 1.总线&#xff08;BUS&#xff09;的基本概念 是构成计算机系统的互联机构&#xff0c;是多个系统功能部件&#xff08;运算器、控制器、存储器、输入/输出设备&#xff09;之间进行数据传送的公共通路。 由传输信息的电路和管理信息传输的协议组成…

网络传输,请每次都开启 TCP_NODELAY

原文&#xff1a;Marc Brooker - 2024.05.09 &#xff08;注&#xff1a;不必过于担心这个问题&#xff0c;大部分现代库&#xff0c;语言&#xff08;如 Go&#xff09;&#xff0c;代理&#xff08;如 Envoy&#xff09;&#xff0c;都默认设置了 TCP_NODELAY。如果遇到网络…

6. 第K小的和-二分

6.第K小的和 - 蓝桥云课 (lanqiao.cn) #include <bits/stdc.h> #define int long long #define endl \n using namespace std; int n,m,k,an[100005],bm[100005]; int check(int x){int res0;//序列C中<x的数的个数for(int i0;i<n;i){//遍历数组A&#xff0c;对于每…

工厂数字化转型实现路线

工厂数字化转型实现路线 随着科技的飞速发展&#xff0c;数字化转型已成为当今社会的热门话题。尤其是对于工厂企业而言&#xff0c;数字化转型更是一种必然趋势。然而&#xff0c;在这个过程中&#xff0c;许多企业面临着种种困难和挑战。因此&#xff0c;探讨工厂企业数字化转…

练习题(2024/5/13)

1移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示例 2&#xff1a; …

如何对基本公共服务均等化进行统计监测

党的十九大指出“履行好政府再分配调节职能&#xff0c;加快推进基本公共服务均等化&#xff0c;缩小收入分配差距”&#xff0c;提出到2035年基本公共服务均等化基本实现。国务院相继于2012年和2017年发布了《国家基本公共服务体系“十二五”规划》和《“十三五”推进基本公共…

基于安装包安装数据库时出现的问题分析及总结

数据库在数据初始化后并不会出现错误&#xff0c;这个时候在启动数据库时会出现启动不成功&#xff0c;不知道问题是什么要学会通过查看日志发现问题&#xff0c;日志就在Data文件夹下。 错误类型1 数据库在初始化后数据库启动不起来 原因&#xff1a;可能是配置文件my.ini一些…