使用 Workerman 实现一个简单的在线交流系统是一个很好的选择,Workerman 是一个高性能的 PHP 异步网络通信框架,非常适合用于构建实时通信应用。下面是一个简单的在线聊天系统的示例代码。
首先,确保你已经安装了 Workerman。你可以通过 Composer 来安装:
composer require workerman/workerman
创建一个 PHP 文件,例如 chat_server.php
,用于启动聊天服务器。
<?php
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
// 创建一个 Websocket 服务器
$ws_worker = new Worker("websocket://0.0.0.0:2346");
// 启动 4 个进程对外提供服务
$ws_worker->count = 4;
// 当收到客户端发来的数据后返回 hello $data
$ws_worker->onMessage = function($connection, $data) use ($ws_worker) {
// 向所有客户端广播消息
foreach($ws_worker->connections as $conn) {
$conn->send("user said: " . $data);
}
};
// 运行 worker
Worker::runAll();
创建一个 HTML 文件,例如 chat_client.html
,用于客户端连接和发送消息。
<!DOCTYPE html>
<html>
<head>
<title>Simple Chat</title>
<script src="https://cdn.jsdelivr.net/npm/socket.io-client@4/dist/socket.io.min.js"></script>
<script>
var socket = io('http://localhost:2346');
socket.on('connect', function() {
console.log('Connected to server');
});
socket.on('message', function(data) {
var messages = document.getElementById('messages');
var message = document.createElement('div');
message.textContent = data;
messages.appendChild(message);
});
function sendMessage() {
var input = document.getElementById('input');
socket.emit('message', input.value);
input.value = '';
}
</script>
</head>
<body>
<h1>Simple Chat</h1>
<div id="messages"></div>
<input type="text" id="input" placeholder="Type a message..." />
<button onclick="sendMessage()">Send</button>
</body>
</html>
在命令行中运行以下命令来启动聊天服务器:
php chat_server.php start
打开多个浏览器窗口或标签页,访问 chat_client.html
文件,输入消息并发送,你应该能够看到所有客户端收到的消息。
2346
没有被其他程序占用。localhost:2346
。这个示例展示了如何使用 Workerman 构建一个简单的在线聊天系统,你可以根据需要扩展和优化这个系统。