實時聊天系統可以讓用戶在網站上實時交流,這對社交平臺、在線客服等網站非常有幫助。以下是一個簡單的基于 PHP 和 WebSocket 的實時聊天系統示例:
1. 首先創建一個 HTML 文件 `index.html` 來顯示聊天界面和發送消息的表單:
```html
<!DOCTYPE html>
<html>
<head>
? ? <title>實時聊天</title>
? ? <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
? ? <div id="chat-box" style="height: 300px; overflow-y: scroll;"></div>
? ? <form id="message-form">
? ? ? ? <input type="text" id="message-input" placeholder="輸入消息...">
? ? ? ? <button type="submit">發送</button>
? ? </form>
? ? <script>
? ? ? ? var conn = new WebSocket('ws://localhost:8080');
? ? ? ? conn.onopen = function(e) {
? ? ? ? ? ? console.log("連接已建立");
? ? ? ? };
? ? ? ? conn.onmessage = function(e) {
? ? ? ? ? ? $('#chat-box').append('<p>' + e.data + '</p>');
? ? ? ? };
? ? ? ? $('#message-form').submit(function(e) {
? ? ? ? ? ? e.preventDefault();
? ? ? ? ? ? var message = $('#message-input').val();
? ? ? ? ? ? conn.send(message);
? ? ? ? ? ? $('#message-input').val('');
? ? ? ? });
? ? </script>
</body>
</html>
2. 接下來創建一個 PHP 文件 `websocket_server.php` 來處理 WebSocket 連接和消息的處理:
```php
<?php
$server = new \Swoole\WebSocket\Server("0.0.0.0", 8080);
$server->on('open', function (\Swoole\WebSocket\Server $server, $request) {
? ? echo "新連接:#{$request->fd}\n";
});
$server->on('message', function (\Swoole\WebSocket\Server $server, $frame) {
? ? echo "收到消息:{$frame->data}\n";
? ? foreach ($server->connections as $fd) {
? ? ? ? $server->push($fd, $frame->data);
? ? }
});
$server->on('close', function ($ser, $fd) {
? ? echo "連接關閉:#{$fd}\n";
});
$server->start();
```
在這個示例中,我們使用了 Swoole 擴展來創建一個 WebSocket 服務器。當用戶在網頁上發送消息時,PHP 服務器會收到消息并將其發送給所有連接的客戶端,從而實現了實時聊天的功能。
這個實時聊天系統是一個很酷的 PHP 功能示例,它展示了如何使用 WebSocket 技術來構建實時通訊功能。你可以根據實際需求對其進行擴展和優化,比如加入用戶身份驗證、消息存儲等功能。