专栏首页淡定的博客windows下WorkerMan实现简单的多人在线聊天

windows下WorkerMan实现简单的多人在线聊天

博主做项目遇到了在网页中需要实现在线聊天的功能,我一看,一脸懵逼,完全没有思路,最后得益于万能的百度,终于知道了websocket这种神奇的协议,还知道了WorkerMan这个神奇的PHP socket服务器框架,下面我们来简单聊聊WorkerMan的简单使用,楼主水平有限,如果有错误,欢迎大家在下面的评论区指出~~

1,介绍:Workerman是什么?

Workerman是一款纯PHP开发的开源高性能的PHP socket 服务框架。

Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的socket服务框架,你可以用它开发tcp代理、梯子代理、做游戏服务器、邮件服务器、ftp服务器、甚至开发一个php版本的redis、php版本的数据库、php版本的nginx、php版本的php-fpm等等。Workerman可以说是PHP领域的一次创新,让开发者彻底摆脱了PHP只能做WEB的束缚。

实际上Workerman类似一个PHP版本的nginx,核心也是多进程+Epoll+非阻塞IO。Workerman每个进程能维持上万并发连接。由于本身常住内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能。同时支持TCP、UDP、UNIXSOCKET,支持长连接,支持Websocket、HTTP、WSS、HTTPS等通讯协以及各种自定义协议。拥有定时器、异步socket客户端、异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件。以上内容来自WorkerMan手册介绍,地址http://doc3.workerman.net/640361

2,环境配置,

Workerman是基于php的,所以我们需要先配置好php环境(配置好的可以忽略),需要配置好环境变量,这个请自行百度解决,使用php -v 查看php 版本,如下图,环境就是配置成功的了,就可以继续下一步的操作!

3,下载Workerman

到Workerman官网下载Workerman,如下图:

4,使用

把下载下来的压缩包解压,并在文件夹中新建一个start.php的文件

把以下代码复制进去!

<?php
use Workerman\Worker;

//Autoloader.php路径
require_once "./Autoloader.php";

$global_uid = 0;

// 当客户端连上来时分配uid,并保存连接,并通知所有客户端
function handle_connection($connection)
{
    global $text_worker, $global_uid;
    // 为这个连接分配一个uid
    $connection->uid = ++$global_uid;
}

// 当客户端发送消息过来时,转发给所有人
function handle_message($connection, $data)
{
    global $text_worker;
    foreach($text_worker->connections as $conn)
    {
        $conn->send("user[{$connection->uid}] said: $data");
    }
}

// 当客户端断开时,广播给所有客户端
function handle_close($connection)
{
    global $text_worker;
    foreach($text_worker->connections as $conn)
    {
        $conn->send("user[{$connection->uid}] logout");
    }
}

// 创建一个文本协议的Worker监听2347接口
$text_worker = new Worker("text://127.0.0.1:2347");

// 只启动1个进程,这样方便客户端之间传输数据
$text_worker->count = 1;

$text_worker->onConnect = 'handle_connection';
$text_worker->onMessage = 'handle_message';
$text_worker->onClose = 'handle_close';

Worker::runAll();

5,运行

在当前文件夹打开终端,并输入php start.php start 打开socket服务,如图:

打开多几个客户端并输入命令:telnet 127.0.0.1 2347 测试,如下图,则代表测试成功:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • WampServer 给电脑搭建apache服务器和php环境

      前端不仅要做页面展示层,还负责着数据交互的部分,不要等到后端人员做好工作了前端才开始对接,那样太被动了。

    书童小二
  • 使用Puppet模块创建LAMP堆栈

    在Puppet中,模块是服务器配置的构建块。模块安装和配置包,创建目录,并生成用户在模块中包含的任何其他服务器更改。Puppet模块旨在执行特定任务的所有部分,...

    用户1196457
  • 简单的文本框输入自动提示

    简单的文本框输入自动提示--输入的时候可以直接异步加载数据库中匹配的项,然后显示出来。

    书童小二
  • 记一次使用Zookeeper C API导致的内存泄漏

    可以看到 definitely lost: 24 bytes in 1 blocks

    扫帚的影子
  • 在PHP中使用MySQL Mysqli操作数据库 ,以及类操作方法

    先来操作函数部分,普遍的MySQL 函数方法,但随着PHP5的发展,有些函数使用的要求加重了,有些则将废弃不用,有些则参数必填...

    书童小二
  • markdown基础语法

    一个淡定的打工菜鸟
  • 既之前的基础,先写个简单的PHP 与数据库 的数据交流

    现在先不用 css 和 javascript     先用纯 html  php  写吧。 所以那些 嵌入式 <font  size=....  什么的看看就算...

    书童小二
  • JS打开摄像头并截图上传

    要注意的是,在chrome以外的浏览器中,使用摄像头或多或少会出现一些问题,可能也是老问题了,所以以下代码主要基于chrome使用

    书童小二
  • iOS 之多个 button 的单选与多选

    下面是实现的代码: 首先创建10个button(一个一个写太麻烦了,个人认为还是用一个 for 循环来创建比较好)

    Python疯子
  • Web 后端--PHP 与数据库的交互

             用 PHP  操作 MySQL ,实现数据的交换,还要多练练....

    书童小二

扫码关注云+社区

领取腾讯云代金券