27
2015
10

利用WorkerMan开发简单的聊天室功能

什么是Workerman ?

Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、手游服务端、网络游戏服务器、聊天室服务器、硬件通讯服务器、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。基于workerman开发者可以更专注于业务逻辑开发,不必再为PHP Socket底层开发而烦恼


Workerman支持的特性

纯PHP开发,多进程支持,支持hhvm

支持TCP/UDP,单机可支持数百万以上TCP长连接

支持分布式,集群能支持数百万甚至更高的并发TCP连接

支持libevent事件触发网络库

支持热更新及服务器平滑重启

支持守护进程化和统计监控模块


源码下载地址:

http://www.workerman.net/download


<?php
use Workerman\Worker;
require_once './Workerman/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://0.0.0.0:2345");

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

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

Worker::runAll();


« 上一篇 下一篇 »

评论列表:

1.访客  2015-12-31 21:58:26 回复该评论
厉害啊!看来用这个来做聊天的程序很适合

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。