这里主要运用swoole实现简单的聊天功能
首先我们安装swoole
目前
仅支持Linux,FreeBSD,MacOS,3类操作系统
Linux内核版本2.3.32以上
PHP5.3.10以上版本,包括PHP7
gcc4.4以上版本或者clang
cmake2.4+,编译为libswoole.so作为C/C++库时需要使用cmake
swoole仅支持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 文件名
运行后 浏览器打开前台文件