计算机系统应用教程网站

网站首页 > 技术文章 正文

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

btikc 2024-10-12 11:13:25 技术文章 12 ℃ 0 评论

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

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

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

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

当然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可以到基友站下载,也可以在其官方直接下载。

这里我们在官方网站直接下载,得到一个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服务器是正常的,能够收到消息,也能回复消息到客户端。

好啦,今期就到这里啦,感兴趣的朋友可以持续关注小搜获得更多有用的内容,也可以私信小搜,获取源代码哦。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表