文档章节

workerman 测试实例

bengozhong
 bengozhong
发布于 2015/08/13 10:01
字数 460
阅读 2128
收藏 2

简单的开发实例

实例一、使用HTTP协议对外提供Web服务

创建http_test.php文件

<?php use Workerman\Worker; require_once './Workerman/Autoloader.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($connection, $data) { // 向浏览器发送hello world $connection->send('hello world');
}; // 运行worker Worker::runAll();

运行

php http_test.php start

测试

假设服务端ip为127.0.0.1

在浏览器中访问url http://127.0.0.1:2345

实例二、使用WebSocket协议对外提供服务

创建ws_test.php文件

<?php use Workerman\Worker; require_once './Workerman/Autoloader.php'; // 创建一个Worker监听2346端口,使用websocket协议通讯 $ws_worker = new Worker("websocket://0.0.0.0:2346"); // 启动4个进程对外提供服务 $ws_worker->count = 4; // 当收到客户端发来的数据后返回hello $data给客户端 $ws_worker->onMessage = function($connection, $data) { // 向客户端发送hello $data $connection->send('hello ' . $data);
}; // 运行worker Worker::runAll();

运行

php ws_test.php start

测试

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

// 假设服务端ip为127.0.0.1 ws = new WebSocket("ws://127.0.0.1:2346");
ws.onopen = function() { alert("连接成功");
    ws.send('tom');
    alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) { alert("收到服务端的消息:" + e.data);
};

实例三、直接使用TCP传输数据

创建tcp_test.php

<?php use Workerman\Worker; require_once './Workerman/Autoloader.php'; // 创建一个Worker监听2347端口,不使用任何应用层协议 $tcp_worker = new Worker("tcp://0.0.0.0:2347"); // 启动4个进程对外提供服务 $tcp_worker->count = 4; // 当客户端发来数据时 $tcp_worker->onMessage = function($connection, $data) { // 向客户端发送hello $data $connection->send('hello ' . $data);
}; // 运行worker Worker::runAll();

运行

php tcp_test.php start

测试

telnet 127.0.0.1 2347
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
tom
hello tom

© 著作权归作者所有

bengozhong
粉丝 19
博文 476
码字总数 485469
作品 0
深圳
程序员
私信 提问
workerman和thinkphp完美结合使用

下载workerman, 放入thinkphp,注意与Home平级,就把workerman当做是一个模块。 进入Home/Controller目录,新建WorkermanController.class.php 直接上源码,这里我是以守护进程方式运行的,...

陈映亮
2016/06/30
1K
0
高性能 PHP socket 框架--Workerman

Workerman 是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、...

walkor
2014/04/12
21.6K
3
利用nginx/apache代理wss 实现 小程序 端口 反向代理

除了用Workerman自身的SSL,也可以利用nginx/apache作为wss代理转发给workerman(注意此方法workerman部分千万不要设置ssl,否则将无法连接)。 通讯原理及流程是: 1、客户端发起wss连接连到...

xiaogg
04/10
0
0
socket.IO 的 PHP 版本--PHPSocket.IO

PHPSocket.IO 是 socket.IO 的php版本,基于workerman开发。用于替代socket.IO服务端,方便用PHP开发socket.IO即时通讯应用。 实例代码: use PHPSocketIOSocketIO; // listen port 2021 for...

walkor
2015/10/12
3.8K
0
Workerman3在Laravel5的封装--Workerboy

Workerboy Workerboy 是 Workerman 3 在 Laravel 5 下的封装。 装上以后就可以用Laravel的artisan命令来管理workerman了。 依赖 PHP 5.4 本产品依赖 PHP的"ext-sockets" 扩展。Windows下就别......

zgldh
2015/04/14
2.2K
0

没有更多内容

加载失败,请刷新页面

加载更多

Class 文件结构

https://www.cnblogs.com/honghuzidelaoren/p/3622021.html

Java搬砖工程师
9分钟前
0
0
未分类资料

$ Inside the Linux Kernel 与知乎出产 一张漫画看懂Linux系统结构

十万猛虎下画山
10分钟前
0
0
Android人脸识别Demo竖屏YUV方向调整和图片保存

本博客包含三个常用方法,用于盛开Android版人脸识别Demo中竖屏使用时送入yuv数据,但一直无法识别的情况。 1.首先可以尝试顺时针旋转90°或270°,然后送入识别SDK。 2.旋转方向后依然无法识...

是哇兴哥棒棒哒
14分钟前
0
0
选择阿里云数据库HBase版十大理由

根据Gartner的预计,全球非关系型数据库(NoSQL)在2020~2022预计保持在30%左右高速增长,远高于数据库整体市场。 阿里云数据库HBase版也是踏着技术发展的节奏,伴随着NoSQL和大数据技术的兴...

阿里云云栖社区
26分钟前
0
0
平滑与滤波

五种常见的平滑滤波器: (1)方框型滤波器: 顾名思义,方框型滤波器就是用一个方框型的kernel跟二维图像进行卷积,其核定义如下: kernel= 其中, a = 1 当该滤波器非归一化滤波器 (1) a=...

yepanl
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部