swoole安装 以及简单的聊天功能

来源:互联网 发布:php接收安卓上传图片 编辑:程序博客网 时间:2024/05/22 02:21

这里主要运用swoole实现简单的聊天功能

首先我们安装swoole

目前

仅支持Linux,FreeBSD,MacOS,3类操作系统Linux内核版本2.3.32以上PHP5.3.10以上版本,包括PHP7gcc4.4以上版本或者clangcmake2.4+,编译为libswoole.so作为C/C++库时需要使用cmakeswoole仅支持PHP5.3.10或更高版本,建议使用PHP5.4+推荐使用centos Ubuntu12 Debian6 我用的是centos7.0 下面也是7.0的安装以及运用

下载地址 http://pecl.php.net/package/swoole

编译安装
cd swoole
phpize
./configure
make
sudo make install

配置php.ini

加入 extension=swoole.so

通过php -m或phpinfo()来查看是否成功加载了swoole;

安装完成后 参考这里代码实现许多功能

http://wiki.swoole.com/wiki/page/479.html

现在我给出的是一个能够简单聊天的功能代码

前台





Document

demo 1

<table>    <tr>        <td><input type="text" id="text"></td>    </tr>    <tr>        <td><input type="button" value="点击" onclick="ab()"></td>    </tr></table><div id="div" style="width:200px; height:200px;" }></div>


//引入一个jQuery文件

<script src="jquery-1.9.1.js"></script><script>    var wsServer = 'ws://192.168.1.113:9502';//这里的IP应该更改    var websocket = new WebSocket(wsServer);    websocket.onopen = function (evt) {        console.log("Connected to WebSocket server.");    };    websocket.onclose = function (evt) {        console.log("Disconnected");    };    websocket.onmessage = function (evt) {        $('#div').append(evt.data+"<br>");        // document.getElementById('div').style.background = evt.data;        console.log('Retrieved data from server: ' + evt.data);    };    websocket.onerror = function (evt, e) {        console.log('Error occured: ' + evt.data);    };function ab(){    var zhi=document.getElementById('text').value;    websocket.send(zhi);}</script>

服务器代码

<?PHP//创建websocket服务器对象,监听0.0.0.0:9502端口$ws = new swoole_websocket_server("0.0.0.0", 9502);//监听WebSocket连接打开事件$ws->on('open', function ($ws, $request) {    var_dump($request->fd, $request->get, $request->server);    //获取所有连接人存为数组    $GLOBALS['fd'][] = $request->fd;    //$ws->push($request->fd, "hello, welcome\n");});//监听WebSocket消息事件$ws->on('message', function ($ws, $frame) {    echo "Message: {$frame->data}\n";//循环所有连接人发送内容      foreach($GLOBALS['fd'] as $key => $val){            $ws->push($val,$frame->data);      }   //$ws->push($frame->fd, "{$frame->data}");});//监听WebSocket连接关闭事件$ws->on('close', function ($ws, $fd) {    echo "client-{$fd} is closed\n";});$ws->start();运行服务器文件在命令行中执行

php 文件名

运行后 浏览器打开前台文件

原创粉丝点击