用swoole写一个聊天的页面,前端页面也给出来
时间: 2024-03-26 22:40:03 浏览: 109
swoole聊天室.rar
以下是使用Swoole实现的聊天页面示例,其中前端页面使用了Vue.js框架:
server.php:
```php
<?php
// 创建服务器
$server = new Swoole\Websocket\Server("0.0.0.0", 9501);
// 监听WebSocket连接打开事件
$server->on('open', function (Swoole\Websocket\Server $server, Swoole\Http\Request $request) {
echo "WebSocket连接打开:" . $request->fd . "\n";
});
// 监听WebSocket消息事件
$server->on('message', function (Swoole\Websocket\Server $server, Swoole\Websocket\Frame $frame) {
// 广播消息给所有客户端
foreach ($server->connections as $fd) {
$server->push($fd, $frame->data);
}
});
// 监听WebSocket连接关闭事件
$server->on('close', function (Swoole\Websocket\Server $server, $fd) {
echo "WebSocket连接关闭:" . $fd . "\n";
});
// 启动服务器
$server->start();
```
index.html:
```html
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Chat</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<div>
<input type="text" v-model="message" @keyup.enter="sendMessage">
<button @click="sendMessage">Send</button>
</div>
<div>
<ul>
<li v-for="(msg, index) in messages" :key="index">{{ msg }}</li>
</ul>
</div>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
message: '',
messages: []
},
methods: {
sendMessage: function () {
// 向WebSocket服务器发送消息
ws.send(this.message);
this.message = '';
}
}
});
// 创建WebSocket连接
var ws = new WebSocket('ws://localhost:9501');
// 监听WebSocket连接打开事件
ws.onopen = function () {
console.log('WebSocket连接打开');
};
// 监听WebSocket消息事件
ws.onmessage = function (event) {
console.log('收到消息:' + event.data);
// 将收到的消息添加到消息列表中
app.$data.messages.push(event.data);
};
// 监听WebSocket连接关闭事件
ws.onclose = function () {
console.log('WebSocket连接关闭');
};
</script>
</body>
</html>
```
该聊天页面使用了WebSocket协议来实现实时聊天功能。在后端使用Swoole创建WebSocket服务器,并监听连接打开、消息和连接关闭事件。在前端使用Vue.js框架创建一个简单的聊天页面,通过WebSocket向后端发送和接收消息,并将消息显示在页面上。需要注意的是,由于WebSocket是基于TCP协议的,所以需要确保服务器的防火墙已经打开了WebSocket的端口。
阅读全文