Workerman WebSocket示例

http://www.wangjian2333.com/article.php?article=42

前段日子已经写过一篇关于websocket的文章,但是当时是用的nodejs来搭建websocket服务器,点击此处跳转到该博文。 但是咱毕竟是学PHP滴,所以掌握如何用PHP实现websocket功能是非常重要的。本文主要用到了一个高性能的PHP Socket服务器框架Workerman。Workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可 以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等(框架下载地址:Linux版,Windows版)。

1、框架的部署

该框架完全由PHP编写而成,支持命名空间,支持类的自动加载,部署起来非常方便。我们首先创建一个空的PHP项目,然后将下载的Workerman框架解压到该项目即可。

2、创建socket服务器

wsserver.php代码如下:

count = 4;

//当接收到客户端发来的数据后显示数据并回发到客户端
$ws_worker->onMessage = function($connection, $data) {
    //显示数据
    echo "you just received: $data\n";
    
    //向客户端回发数据
    $connection->send("you just send: $data");
};

//运行worker
$ws_worker->runAll();

注:该代码只能够在PHP_CLI模式下运行,打开cmd,运行php d:/website/socket/wsserver.php start即可开启服务器。

3、客户端程序

client.html代码如下:




HTML5






WebSocket示例

4、测试

在浏览器中请求client.html,连接socket服务器,发送4次消息,查看客户端和服务端的运行情况。

客户端运行结果:

服务端运行结果:

5、将客户端发送来的数据存入数据库

只需简单的修改一下服务器代码即可,修改后的代码如下:

count = 4;

//初始化数据库连接
$dsn = "mysql:host=localhost;dbname=chat;port=3306";
$user = "root";
$pwd = "yb0623";
$pdo = new PDO($dsn, $user, $pwd);

//当接收到客户端发来的数据后显示数据并回发到客户端
$ws_worker->onMessage = function($connection, $data) {
    //显示数据
    echo "you just received: $data\n";
    
    //将数据插入到数据库
    global $pdo;
    $time = time();
    $insert = "insert into chat_message(content, time, from_id, to_id) values('$data', $time, 1, 2)";
    
    $pdo->exec($insert);
    
    //向客户端回发数据
    $connection->send("you just send: $data");
};

//运行worker
$ws_worker->runAll();

再次向服务器端发送一次消息并查看数据库:

你可能感兴趣的:(Workerman WebSocket示例)