一、首先你要在项目里安装composer(按照步骤下载):
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
上述 3 条命令的作用依次是:
下载安装脚本 - composer-setup.php - 到当前目录。
执行安装过程。
删除安装脚本。
下载成功后,查看版本号,就可查看有无成功下载:
composer -v
具体查看composer中国全量镜像:https://pkg.phpcomposer.com/#how-to-install-composer
二、下载workerman
a、先检查你现在的PHP版本号(PHP>=5.3.3)
b、cmd下输入命令,composer安装
composer require workerman/workerman
三、安装好workerman后,创建start.php(可以放在项目的任意目录,只需要引入workerman的Autoloader.php),代码如下:
<?php
use Workerman\Worker;
//Autoloader.php路径
require_once "./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监听2000接口 用0.0.0.0方便链接内网外网
$text_worker = new Worker("websocket://0.0.0.0:2000");
// 只启动1个进程,这样方便客户端之间传输数据
$text_worker->count = 1;
$text_worker->onConnect = 'handle_connection';
$text_worker->onMessage = 'handle_message';
$text_worker->onClose = 'handle_close';
Worker::runAll();
四、创建好start.php后,在start.php的文件的位置,打开cmd输入命令:
php start.php start
截图实例:
五、在web前端,使用websocket连接(演示):
<input type="text" id="chat">
<div class="sub" style="width:50px;height:50px;border:1px solid #000;cursor:pointer;">提交</div>
<script src="引用jq"></script>
<script>
$(function(){
var ws = new WebSocket("ws://127.0.0.1:2000");
ws.onmessage = function(e) {
alert(e.data);
};
$('.sub').click(function(){
var chat = $('#chat').val();
var ws = new WebSocket("ws://127.0.0.1:2000");
ws.onopen = function() {
ws.send(chat);
};
// ws.onmessage = function(e) {
// alert(e.data);
// };
})
})
</script>
如果看到服务器反馈信息,则证明成功了!