swoole

服务端

/**

  • 服务

  • Class Server
    /
    class Server
    {
    /
    *

    • swoole服务
    • @var
      */
      private $serv;

    /**

    • redis服务
    • @var
      */
      private $redis;

    /**

    • 服务启动
      */
      public function index()
      {
      $this->serv = new swoole_websocket_server($this->config['SWOOLE_URL'], $this->config['SWOOLE_PORT']);
      $this->serv->set(array(
      'worker_num' => 4,
      'daemonize' => true,// 是否开启守护进程
      ));
      //监听WebSocket连接打开事件
      $this->serv->on('open', [$this, 'onOpen']);
      //监听WebSocket消息事件
      $this->serv->on('message', [$this, 'onMessage']);
      $this->serv->on('worker', [$this, 'onWorker']);

      //监听WebSocket连接关闭事件
      $this->serv->on('close', [$this, 'onClose']);

      //监听WebSocket连接启动事件
      $this->serv->on('start', [$this, 'onStart']);

      $this->serv->start();
      }

    public function onWorker($ws, $worker_id)
    {
    swoole_timer_tick(2000, function ($timer_id) use ($ws, $worker_id) {
    });
    }

    /**

    • 记录开启日志
      */
      public function onStart($ws)
      {
      echo "onStart";
      }

    /**

    • /**
    • 监听WebSocket连接打开事件
      */
      public function onOpen($ws, $request)
      {
      echo 'onOpen';
      }

    /**

    • 监听WebSocket消息事件
      */
      public function onMessage($ws, $frame)
      {
      $ws->push($frame->fd, json_encode([
      'result' => [
      'serverTime' => $frame->data
      ]
      ]));
      }

    /**

    • 监听WebSocket连接关闭事件
      */
      public function onClose($ws, $fd)
      {
      echo 'onClose';
      }

}

// 启动服务器
$server = new Server();
$server->index();

客户端

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
if ("WebSocket" in window)
{
console.log("您的浏览器支持 WebSocket!");
var ws = new WebSocket("ws://192.168.1.158:9501");
ws.onConnect = function(){
ws.send("链接");
};
ws.onopen = function() {
ws.send("AService");
};
ws.onmessage = function(evt){
var received_msg = evt.data;
console.log(received_msg);
};
ws.onclose = function() {
console.log("连接已关闭...");
};
}
else {
console.log("您的浏览器不支持 WebSocket!");
}
</script>
</head>
<body>
<h1 id="haha"></h1>
</body>
</html>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • swoole 安装用的是centOSphp安装目录:/usr/local/php php.ini配置文件路径:/u...
    a十二_4765阅读 14,080评论 3 9
  • 基于上一篇文章swoole+tp5异步多线程,发现很多问题,所以深入理解一下swoole的进程模型 想探讨一下sw...
    会写bug的鸟阅读 5,461评论 2 4
  • 前文再续,就书接上一回,随着与Server、TCP、Protocol的邂逅,Swoole终于迎来了自己的故事,今天...
    蜗牛淋雨阅读 5,780评论 1 14
  • 前言 上一回讲到,Swoole终于成功邂逅了PHP,现在要开始它们的奇妙路程了。 Server之初 通常,我们会把...
    零一间阅读 7,946评论 0 12
  • 相信日积月累的力量,我是162号星宝宝,正在参加日记星球21天蜕变之旅。这是我的第72篇日记。5月14日晴 内容简...
    我是魏魏阅读 2,615评论 0 0

友情链接更多精彩内容