物联网之实时通讯,使用WorkerMan创建websocket服务器

在物联网控制远程硬件的过程中,实时通信是必不可少的。不用实时通信可不可以呢?当然是可以的,但在实际应用中的体验可能就十分的不好了。

试想一下,一个联网电灯,控制端命令发出去,电灯要2到3秒钟以后才能开关,这种体验实在太差劲了。

那么我们该如何实现实时通讯呢?

最常用的一种就是Websocket。后端能实现websocket的语方很多,例如Node.js,Go,Python,dotnet core,java。

 websocket与http的区别

当然php也可以做到,只是要依赖这篇要展开说的Workerman。

workerman是一个高性能的PHP socket 服务器框架。性能有多高呢?官方测试给出的数据是下面这样的:

测试环境:

系统:ubuntu 12.04 LTS 64位
内存:8G
cpu:Intel® Core™ i3-3220 CPU @ 3.30GHz × 4

测试结果:

短链接(每次请求完成后关闭链接,下次请求建立新的链接):
条件: 压测脚本开500个线程,每个线程链接Workerman 10W次,每次链接发送1个请求
结果: 吞吐量:3W/S , cpu:60% , 内存占用:4*8M = 32M
长链接(每次请求后不关闭链接,下次请求继续复用这个链接):
条件: 压测脚本开1000个线程,每个线程链接Workerman 1次,每个链接发送10W请求
结果: 吞吐量:15.6W/S , cpu:68% , 内存占用:4*8M = 32M
无流量抖动,无内存泄漏,性能非常强悍

小智选择Workerman的理由不仅是因为它的性能不错,终其原因是:作为使用世界上最好的开发语言之一的我,workerman布署简单,学习成本低是最主要的原因。

说到workerman同学们可能会说swoole也很不错。没错swoole也是个好东西,小智会开专文来讲述它的。

好了,现在我们开始进入正题,如何使用workerman创建属于自己的websocket服务器。

1.下载workerman

workerman可以到基友站下载,也可以在其官方直接下载。

下载workerman

这里我们在官方网站直接下载,得到一个zip包。

2.部署workerman并编写test.php

解压刚刚下载的zip包到C盘根目录下。

进入workerman-master目录,然后新建一个test.php,内容如下:

<?php
use Workerman\Worker;
require_once __DIR__ . '/Autoloader.php';
// 创建一个Worker监听2345端口,使用http协议通讯
$http_worker = new Worker("websocket://0.0.0.0:2345");
// 启动4个进程对外提供服务
$http_worker->count = 4;
// 接收到浏览器发送的数据时回复hello world给浏览器
$http_worker->onMessage = function($connection, $data)
{
 var_dump($data);
 // 向浏览器发送hello world
 $connection->send('hello world');
};
Worker::runAll();

3.调试test.php

运行命令行工具并进入c:\workerman-master目录,输入命令php test.php start

 运行结果

看到这样的画面,就证明websocket服务器已经成功建立。接下来我们来测试一下。

 测试websocket服务器是否正常

从上图可以看出,我们的websocket服务器是正常的,能够收到消息,也能回复消息到客户端。

好啦,今期就到这里啦,感兴趣的朋友可以持续关注小智获得更多有用的内容。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智云说

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值