一、服务端
<?php
$server = new swoole_websocket_server("0.0.0.0", 2345); //自己在阿里云后台开放2345端口
$server->set(array(
'heartbeat_check_interval' =>600, 检查心跳的间隔
'heartbeat_idle_time' =>600 //最大心跳间隔
));
$server->on('open', function ($server, $request) {
$GLOBALS['fd'][$request->fd]['id']=$request->fd;
echo '欢迎登录,你的id='.$request->fd;
});
$server->on('message', function ($server, $request) {
$resut = json_decode($request->data);
$t_id = $resut[0];
$msg = $resut[1];
if(is_numeric($t_id)){ //单发
$num = 0;
foreach ($server->connections as $conn){
if($conn ==$t_id ){ //防止要发送的对方已经不在线了
$server->push($t_id,$msg); //主动发送给$t_d
}
$num++;
}
echo '当前在线人数'.$num;
}else{ //群发
foreach ($server->connections as $conn){
$server->push($conn,$msg);
}
}
});
$server->on('close', function ($server, $fd) { //离开
echo "{$fd} 下线了\n";
unset($GLOBALS['fd'][$fd]);
});
$server->start();
二客户端
<html>
<head>
<meta charset="UTF-8">
<title>Web sockets test</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script type="text/javascript">
var wsServer = 'ws://47.98.24.7:2345'; //服务器地址
var websocket = new WebSocket(wsServer); //创建WebSocket对象
websocket.onopen = function (evt) {
//已经建立连接
$('#send').on('click',function(){
var msg = $('#msg').val();
if(msg == '')
{
alert('不能发送空消息');
return ;
}
var arr =Array();
arr[0]=1; //发给谁
arr[1]=msg; //内容
var str = JSON.stringify(arr);
websocket.send(str);
});
$('#send_group').on('click',function(){
var msg = $('#msg').val();
if(msg == '')
{
alert('不能发送空消息');
return ;
}
var arr =Array();
arr[0]='all'; //发给谁
arr[1]=msg; //内容
var str = JSON.stringify(arr);
websocket.send(str);
});
};
websocket.onclose = function (evt) {
//已经关闭连接
};
websocket.onmessage = function (evt) {
//收到服务器消息,使用evt.data提取\
console.log(evt.data)
};
websocket.onerror = function (evt) {
//产生异常
};
function send(){
$msg = $('#msg').val();
websocket.send($msg);
}
</script>
</head>
<body>
<input id="msg" type="text" name="msg">
<input id="send" type="button" name="" value="单发">
<input id="send_group" type="button" name="" value="群发">
</body>
</html>
<?php