利用workerman实现一个简单的在线交流系统附加完整的代码

2025-01-08 16:01:54

使用 Workerman 实现一个简单的在线交流系统是一个很好的选择,Workerman 是一个高性能的 PHP 异步网络通信框架,非常适合用于构建实时通信应用。下面是一个简单的在线聊天系统的示例代码。

1. 安装 Workerman

首先,确保你已经安装了 Workerman。你可以通过 Composer 来安装:

composer require workerman/workerman

2. 创建聊天服务器

创建一个 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();

3. 创建客户端页面

创建一个 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>

4. 启动服务器

在命令行中运行以下命令来启动聊天服务器:

php chat_server.php start

5. 测试聊天系统

打开多个浏览器窗口或标签页,访问 chat_client.html 文件,输入消息并发送,你应该能够看到所有客户端收到的消息。

6. 注意事项

  • 确保服务器端口 2346 没有被其他程序占用。
  • 如果你在本地测试,确保浏览器能够访问到 localhost:2346
  • 这个示例是一个非常基础的聊天系统,实际应用中可能需要添加更多的功能,如用户认证、消息存储、群聊等。

这个示例展示了如何使用 Workerman 构建一个简单的在线聊天系统,你可以根据需要扩展和优化这个系统。