1.先下载项目吧
用composer命令直接下就OK,没有composer的百度搜一下安装即可。
composer require workerman/workerman
或者是GitHub也可以
git clone https://github.com/walkor/Workerman
这个就是下载下来的了,直接放在项目的文件夹下面即可。
2.开始写代码
在项目的目录下新建一个文件,像这样
下面是chat.php的代码
use Workerman\Worker;
require_once "Workerman/Autoloader.php";
//简易聊天室
$global_uids = 0;
//一共有多少用户
//用户连接事件
function conn($connection)
{
global $worker,$global_uids;
$connection->uid = ++$global_uids;
}
//接收用户发送消息事件 然后发送给所有用户
function msg($connection,$data)
{
global $worker;
foreach ($worker->connections as $conn) {
$conn->send("用户{$connection->uid}说:{$data}");
}
}
//用户退出事件
function close($connection)
{
global $worker;
foreach ($worker->connections as $conn) {
$conn->send("用户{$connection->uid}离开");
}
}
$worker = new Worker('websocket://0.0.0.0:2222');
$worker->count = 1;
$worker->onConnect = 'conn';
$worker->onMessage = 'msg';
$worker->onClose = 'close';
Worker::runAll();
至此,大部分工作就已经完成了。
3.客户端
下面是客户端的代码,比较简单,主要实现功能。
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript" src="jquery.3.5.0.min.js"></script>
<style type="text/css">
*{
padding:20px;
}
#box{
width: 500px;
height: auto;
border:1px lightgray solid;
}
</style>
</head>
<body>
<div id="box">
</div>
<input type="text" placeholder="输入要发送的内容" id="message">
<input type="button" name="" value="发送" id="sub">
<script type="text/javascript">
ws = new WebSocket("ws://127.0.0.1:2222");
ws.onopen = function() {
$("#box").append("连接成功<br />");
};
ws.onmessage = function(e) {
$("#box").append(e.data + "<br />");
};
$("#sub").click(function(){
let content = $("#message").val();
ws.send(content);
});
</script>
</body>
</html>
记得改一下jquery的路径!!
至此,所有代码就都完事了。
这是我的项目的目录结构。
1.html、2.html、3.html、4.html、5.html的代码都是一样的,复制即可。
4.运行
打开的项目在磁盘中的地址,例如:
这里输入:cmd
dos页面出现后,看看是不是在项目的根目录,然后输入命令:
php chat.php start
dos页面不要关掉,不要关掉,不要关掉,否则不运行!!!!
如上图。
直接打开之前弄好的html页面。
OK。到这里一切都可以了。