php+swoole、swoole_framework、websocket服务器等内容普及

版权声明:本文为博主原创文章,拒绝相同的垃圾博文。 https://blog.csdn.net/tsummerb/article/details/79592400
应公司要求,给公司商城添加用户和商家聊天的功能。为了开发的便利, 选用了swoole_framework框架,他有别于其他web开发框架,具体框架详情如下:
  • 内置PHP应用服务器,可脱离nginx/php-fpm/apache独立运行
  • 配置化与资源自动工厂,可实现从配置中创建资源对象,完全无需new对象
  • 全面采用命名空间+autoload,代码中无需任何的include/require
  • 全局注册树,所有资源都挂载到全局树上,彻底实现资源的单例管理和懒加载
  • 全栈框架,提供了数据库操作,模板,Cache,日志,队列,上传管理,用户管理等几乎所有的功能

框架地址:https://github.com/matyhtf/webim

一、在开发之前我们有必要了解一下,websocket和http之间的关联和差异,具体如下:

websocket是一种持久化网络通信协议,即长连接。http是一种就是非持久化的协议,即短连接。

http和websocket 请求头对比:

HTTP:

原来的时候,客户端通过http(骑马)带着信请求服务器,服务器处理请求(写回信),再次通过http(骑马)返回;链接断开;

WebSocket:

客户端通过http(骑马)带着信请求服务器,但同时,携带了Upgrade:websocketConnection:Upgrade(两根管子),服务器如果支持WebSocket协议(有两根管子的接口),使用Websocket协议返回可用信息(丢弃马匹),此后信息的传递,均使用这两个管子,除非有一方人为的将管子切断;若服务器不支持,客户端请求链接失败,返回错误信息;

扫描二维码关注公众号,回复: 4946177 查看本文章

http和websocket 响应头对比:


二、php+swoole的内容普及
swoole使用纯C语言编写,提供了PHP语言的异步多线程服务器、异步TCP/UDP网络客户端、异步MySQL、数据库连接池、AsyncTask,消息队列、毫秒定时器、异步文件读写、异步DNS查询。
创建异步多线程服务器
基本分三步:①通过构造函数创建swoole_server对象②调用set函数设置swoole的相关属性③调用on函数设置相关回调函数

以创建websocket服务器为例:

<?php
$ws=new swoole_websocket_server("0.0.0.0",9502);  //swoole_websocket_server是swoole_http_server的子类,内置了WebSocket的支持
//三个事件,open:建立连接、message:接收消息、close
//参数$ws:服务器,$request:客户端信息
//建立连接
$ws->on('open',function($ws,$request){
  var_dump($request);
  //发送到客户端
  $ws->push($request->fd,"连接成功");
});
//接收信息
$ws->on('message',function($ws,$request){
  echo "Message:$request->data";
  $ws->push($request->fd,"返回数据成功");
});
//关闭连接
$ws->on('close',function($ws,$request){
   echo '连接关闭';
});
$ws->start();
使用原生开发缺点明显:后端逻辑处理不方便,代码不清晰等,故使用 swoole_framework框架,框架详情见git地址介绍,此处不再做过多介绍

猜你喜欢

转载自blog.csdn.net/tsummerb/article/details/79592400
今日推荐