workerman安装使用

以下是 Workerman 在 Ubuntu 上的部署使用步骤:

1. 安装 PHP 和 PHP 扩展

首先,需要安装 PHP 和一些必要的 PHP 扩展,比如 `pcntl` 和 `posix` 扩展。可以使用以下命令进行安装:

sudo apt-get install php php-pcntl php-posix 

安装event扩展: 

注意提示:Include libevent OpenSSL support [yes] : 时输入no回车,其它直接敲回车就行

 Event扩展不是必须的,当业务需要支撑大于1000的并发连接时,推荐安装Event,能够支持巨大的并发连接。如果业务并发连接比较低,例如1000以下并发连接,则可以不用安装。

 pecl install event

php.ini文件添加

extension=event.so

2. 下载 Workerman

可以通过 Git 下载 Workerman:

git clone https://github.com/walkor/Workerman.git

也可以直接下载压缩包,然后解压:

wget https://github.com/walkor/Workerman/archive/master.zip
unzip master.zip

3. 创建一个简单的 PHP 脚本

创建一个简单的 PHP 脚本,例如 `hello.php`,用于测试 Workerman 是否正常工作:

<?php
use Workerman\Worker;

require_once __DIR__ . '/Workerman/Autoloader.php';

$worker = new Worker('websocket://0.0.0.0:8080');

$worker->onMessage = function($connection, $data) {
    $connection->send('Hello, ' . $data);
};

Worker::runAll();

这个脚本创建了一个 WebSocket 服务器,监听 8080 端口,并在收到消息时回复一个简单的消息。

4. 运行 PHP 脚本

使用以下命令运行 PHP 脚本:

php hello.php start

这个命令会启动一个 Workerman 服务器,并监听 8080 端口。

5. 测试服务器

使用 WebSocket 客户端测试服务器是否正常工作。可以使用浏览器中的 JavaScript WebSocket 客户端,或者使用命令行工具 `wscat`。

wscat -c ws://localhost:8080

连接成功后,可以输入一些消息并查看服务器是否回复了相应的消息。

这就是在 Ubuntu 上部署和使用 Workerman 的基本步骤。如果需要更多的功能和配置选项,请参考 Workerman 的文档。

6.入口文件编写

点对点发送消息示例:

<?php

use Workerman\Worker;

use Workerman\Connection\TcpConnection;

require_once __DIR__ . '/vendor/autoload.php';


 

// 注意:这里与上个例子不同,使用的是websocket协议

$worker = new Worker("websocket://0.0.0.0:2000");

// 启动4个进程对外提供服务

$worker->count = 4;

//保存连接ID

$connectList = [];

// 监听WebSocket消息事件

$worker->onMessage = function(TcpConnection $connection, $data) use(&$connectList) {

    $dataArray = json_decode($data,true);

    if(!empty($dataArray['type']) && $dataArray['type'] == 'message'){

        $uid = $dataArray['toClient'];

        $message = $data;

        $targetConnection = $connectList[$uid];

        $targetConnection->send($message);

    } elseif (!empty($dataArray['type']) && $dataArray['type'] == 'connect') {

        // 将用户id和连接id绑定起来

        $uid = $dataArray['uid'];

        $connection->uid = $uid;

        $connectList[$uid] = $connection;

    }

};

// 监听WebSocket连接建立事件

$worker->onConnect = function($connection){

    // echo "new connection from ip " . $connection->getRemoteIp() . "\n";

};

// 监听WebSocket连接关闭事件

$worker->onClose = function($connection) use(&$connectList) {

    $uid = array_search($connection, $connectList);

    unset($connectList[$uid]);

};

// 运行worker

Worker::runAll();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值