Swoole创建基于HttpServer与基于WebSocket服务器---学习笔记(4)

  • 启动HttpServer服务端
<?php
$http = new swoole_http_server("0.0.0.0", 8888);
$http->set([
  'enable_static_handler'=>true,
  'document_root' => '/home/wwwroot/default
  /swool/demo/server/data'
  //设置终端执行保存的静态路径
]);
$http->on('request', function ($request, $response) {
   $response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
});
$http->start();
 ?>
  • 测试连接
    这里写图片描述

  • WebSocket服务器是建立在Http服务器之上的长连接服务器,客户端首先会发送一个Http的请求与服务器进行握手
    握手成功后会触发onOpen事件,表示连接已就绪,onOpen函数中可以得到$request对象,包含了Http握手的相关信息,如GET参数、Cookie、Http头信息等。
<?php
$server = new swoole_websocket_server("0.0.0.0", 9501);
//$server->set([]); 可以设置一些参数
//监听_websocket打开事件
$server->on('open', 'onOpen');
function onOpen($server,$request){
   print_r("我是收到的客户端连接ID:".$request->fd); 
   //$fd 客户端连接的ID,如果指定的$fd对应的TCP连接并非websocket
   客户端,将会发送失败https://wiki.swoole.com/wiki/page/399.html
}
//监听ws的消息事件
$server->on('message', function (swoole_websocket_server
 $server, $frame) {
    echo "receive from {$frame->fd}:{$frame->data},
    opcode:{$frame->opcode},fin:{$frame->finish}\n";
    //websocket客户端连接推送数据,长度最大不得超过2M。
    $server->push($frame->fd, "this is server");
});

$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed\n";
});

$server->start();

这里写图片描述
这里写图片描述


  • WebSocket client 端
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width,
  initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <h1>websocket客户端测试</h1>
  <script type="text/javascript">
         // 打开一个 web socket
         var ws = new WebSocket("ws://47.94.166.123:9999/");

         ws.onopen = function()
         {
             // Web Socket 已连接上,使用 send方法发送数据
              ws.send("发送数据");
              console.log("数据发送中...");
         };
         ws.onmessage = function (evt)
         {
             var received_msg = evt.data;
             console.log(received_msg,2222);
         };
         ws.onclose = function()
         {
            // 关闭 websocket
            alert("连接已关闭...");
         };
    </script>
</body>
</html>

这里写图片描述

这里写图片描述

文档地址:https://wiki.swoole.com/wiki/page/479.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值