用PHP写一个ws服务端 支持post数据接收 post收到数据后 ws转发给客户端
时间: 2024-03-25 22:37:28 浏览: 161
要实现一个简单的 WebSocket 服务器,需要进行以下步骤:
1. 创建一个 WebSocket 服务器对象,并监听客户端连接请求:
```php
$server = new \Swoole\WebSocket\Server("0.0.0.0", 9501);
$server->on('open', function (\Swoole\WebSocket\Server $server, $request) {
echo "new client connected: {$request->fd}\n";
});
```
2. 监听客户端发送的消息,并在收到消息时进行处理:
```php
$server->on('message', function (\Swoole\WebSocket\Server $server, \Swoole\WebSocket\Frame $frame) {
// 处理客户端发送的消息
// $frame->data 是客户端发送的消息内容
// $frame->fd 是客户端的连接标识符
echo "received message from client {$frame->fd}: {$frame->data}\n";
// 转发消息给所有连接的客户端
foreach ($server->connections as $fd) {
if ($server->exist($fd)) {
$server->push($fd, $frame->data);
}
}
});
```
3. 启动 WebSocket 服务器:
```php
$server->start();
```
4. 在客户端建立 WebSocket 连接,并向服务器发送消息:
```html
<script>
var ws = new WebSocket('ws://localhost:9501');
ws.onopen = function() {
console.log('WebSocket connected.');
ws.send('Hello, WebSocket!');
};
ws.onmessage = function(event) {
console.log('received message from server:', event.data);
};
</script>
```
以上代码只是一个简单的示例,不能直接用于生产环境。实际应用中,还需要加入数据校验、异常处理、安全防范等功能。
阅读全文