swoole的初步学习
1、能做什么
异步多线程服务器和客户端
异步mysql、redis、数据库连接池、任务队列
http/websocket服务器/客户端
异步文件独写
支持协程
2、环境要求
php5.4以上
centos7
3、关于tcp服务器
4、关于UDP服务器
packet接收发送数据到客户端的数据
5、关于调试工具【网络调试助手】
6、代码示例
tcp
//创建服务器
$host='0.0.0.0';
$port=9501;$ws = new swoole_server($host,$port);
/*** host :监听的ip* port: 端口号 1024以下的端口号需要root权限*/
//使用
// bool $swoole_server->on($envent,$callback);
/*** connect :当建立链接的时候 $server:服务器信息,$fd 客户端信息* receive :当接收到数据的时候 $server:服务器信息,$fd:客户端信息。$from_id:id ,$data:数据* closer :关闭连接*/
$ws->on('connect',function($server,$fd){echo "建立连接";
});
$ws->on('receive',function($server,$fd,$from_id,$data){var_dump($data);echo "接收到数据\n";
});
$ws->on('close',function($server,$fd){echo "关闭连接";
});
$ws->start();//启动服务
UDP
$serv=new swoole_server('0.0.0.0',9502,SWOOLE_PROCESS,SWOOLE_SOCK_UDP);
/**\* $server:服务器信息* $data:接收到的数据* $fd:客户端信息*/
$serv->on('packet',function($server,$data,$fd){//发送到数据到客户端$server->sendto($fd['address'],$fd['port'],"server:$data");var_dump($fd);
});
$serv->start();//启动服务
web服务器
<?php
$serv= new swoole_http_server("0.0.0.0",9501);
/*** 获取请求* //request 请求信息* response 返回信息**
**/
$serv->on("request",function ($request,$response){$response->header("Content-Type","text/html:charset=utf-8");$html = file_get_contents("./index.html");$response->end($html);
});
$serv->start();
websocket服务器
<?php
//创建websocket服务器
$serv= new swoole_websocket_server("0.0.0.0",9502);//on//open 建立连接 $ws 服务器 $request :客户端信息
$serv->on("open",function ($ws,$request){var_dump($request);$ws->push($request->fd,"welcom\n");});
//message 发送消息
$serv->on("message",function ($ws,$request){echo "message:$request->data";$ws->push($request->fd."get it message");
});
//close 关闭连接
$serv->on("close",function ($ws,$request){echo "close\n";
});
$serv->start();
swoole的初步学习相关推荐
- HTMLParser的初步学习
Python的自带模块--HTMLParser的初步学习 HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析. 本文主要简单讲一下HTMLParser的用法. ...
- 初步学习pg_control文件之三
接前文,初步学习pg_control文件之二 继续学习: 研究 DBState,先研究 DB_IN_PRODUCTION ,看它如何出现: 它出现在启动Postmaster时运行的函数处: /* * ...
- eclipsevue代码怎么运行_[Java教程]使用eclipse初步学习vue.js操作
[Java教程]使用eclipse初步学习vue.js操作 0 2017-11-26 19:00:06 一.vue.js的初步认识 https://unpkg.com/vue ">vu ...
- json2.js的初步学习与了解(转)
转载来源:http://apps.hi.baidu.com/share/detail/6092406 json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org ...
- 【TensorFlow-serving】初步学习模型部署
前言 初步学习tensorflow serving的手写数字识别模型部署.包括简单的模型训练.保存.部署上线.因为对docker和网络不太熟悉,可能会有部分错误,但是看完博客,能跑通整个流程.此博客将 ...
- 初步学习pg_control文件之八
接前文 初步学习pg_control文件之七 继续 看:catalog_version_no 代码如下: static void WriteControlFile(void) {.../** In ...
- 初步学习pg_control文件之六
接前文:初步学习pg_control文件之五 ,DB_IN_ARCHIVE_RECOVERY何时出现? 看代码:如果recovery.conf文件存在,则返回 InArchiveRecovery = ...
- 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助...
初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: 1 var fs = require( ...
- 罗佳琪的第三次预备作业——虚拟机的安装及Linux的初步学习
虚拟机的安装及Linux的初步学习 坎坷的安装过程 首先我按照老师给的基于VirtualBox虚拟机安装Ubuntu图文教程进行了下载,下载很顺利但是安装时出现了问题. 起初我以为是电脑位数问题,但我 ...
最新文章
- 为什么不用原生Spring-Cloud-Config
- 【Network Security!】NTFS安全权限(看不懂你来打我)
- 图解设计模式:抽象工厂
- Quartz.Net定时任务EF+MVC版的web服务
- 电脑知识:电脑无法开机解决方案,赶紧收藏吧!
- c语言去除图像斑点,武汉理工-图像检测与处理技术-实验报告.doc
- 《Effective C++》阅后心得
- 【超全教程】SpringBoot 2.3.x 分层构建 Docker 镜像实践
- 软件架构 —— 消息范式
- Python多处理示例
- 2023中国科学技术大学计算机考研信息汇总
- BS架构与CS架构的区别(最详细)
- 一名软件测试工程师的日常
- 李白的苏台览古译文赏析
- linux c 端口复用,Linux C++ 网络编程学习系列(1)——端口复用实现
- linux系统键盘关机快捷键,Linux三种关机/重启系统的命令
- 用python画一朵鲜艳欲滴的红玫瑰
- Linux的vx开头的文件,微博 Qzone 微信 Linux文件及目录常用命令,进来瞅瞅
- (BAT批处理)批量文件夹重命名,要求是在原文件夹名前加上英文字母前缀aa
- java ftpClient 下载文件损坏问题
热门文章
- 中图杯获奖作品计算机组,“中图杯”第十四届环境地图大赛召开 地图慧成指定制图软件...
- ESP32-C3——专为物联网应用场景设计
- 一些程序中常出现的英文符号的读法
- VSCODE无法使用unordered_map解决
- android 图片底部波浪线,Android实现波浪线效果(xml bitmap)
- SystemUI 状态栏增加移动数据开启图标
- 台式电脑键盘错乱会出现计算机模式怎么办,​键盘按键错乱能修吗?台式电脑键盘按键错乱怎么修复?...
- 爬虫学习笔记(十八)—— 点触验证码:超级鹰、12306自动登录
- [深度学习 - 实战项目] CRAFTCRNN_seq2seq图片文字提取
- 深入理解Java虚拟机(三)之详拆运行时数据区的各个结构----方法区(元空间)