异步发送广播消息模式
点击(此处)折叠或打开
-
<?php
-
$serv = new swoole_websocket_server("192.168.86.72", 9502);
-
$serv->set(array(
-
'task_worker_num' => 4
-
));
-
$serv->on('Open', function($server, $req) {
-
echo "connection open: ".$req->fd;
-
});
-
$serv->on('Message', function($server, $frame) {
-
$task_id = $server->task($frame->data);
-
echo "message: ".$frame->data;
-
//foreach($server->connections as $fd) {
-
// $server->push($fd, $frame->data);
-
//}
-
});
-
$serv->on('Close', function($server, $fd) {
-
echo "connection close: ".$fd;
-
});
-
-
$serv->on('Task', function ($server, $task_id, $from_id, $data) {
-
echo "New AsyncTask[id=$task_id]".PHP_EOL;
-
foreach($server->connections as $fd) {
-
$server->push($fd, $data);
-
}
-
$server->finish("send OK");
-
});
-
$serv->on('Finish', function ($serv, $task_id, $data) {
-
echo "AsyncTask[$task_id] Finish: $data".PHP_EOL;
-
});
- $serv->start();
js客户端代码
点击(此处)折叠或打开
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<title></title>
-
<meta charset="UTF-8">
-
<script type="text/javascript">
-
var exampleSocket = new WebSocket("ws://192.168.86.72:9502");
-
exampleSocket.onopen = function (event) {
-
exampleSocket.send("服务器连接成功!");
-
};
-
exampleSocket.onmessage = function (event) {
-
console.log(event.data);
-
document.getElementById('main').innerHTML = document.getElementById('main').innerHTML + "
" + event.data;
-
}
-
</script>
-
</head>
-
<body>
-
<input type="text" id="username">
-
<input type="text" id="content">
-
<button onclick="exampleSocket.send( document.getElementById('content').value )">发送</button>
-
<div id='main'>
-
</div>
-
</body>
- </html>