前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >swoole学习的细节积累

swoole学习的细节积累

作者头像
waki
发布2020-10-30 10:20:14
9630
发布2020-10-30 10:20:14
举报
文章被收录于专栏:waki

一、Http继承Tcp后,不能使用onConnect/onReceive

在这里插入图片描述
在这里插入图片描述

二、tcp怎么长连接(只返回一次)

//怎么让客户端保持长链接???设置长超时 + 服务端长时间不返回信息(sleep()函数模拟)

三、由 一 可知: 有继承关系的只使用最后一个子类 是很强大类,包含功能最多。

请在子类中放心使用父类的东西

四、tcp客户端//一个链接只能使用一次send函数? 两次会拼接在一起发送。。。

五、//官方解释:在 onTask 回调函数中 return 字符串,等同于调用 finish https://wiki.swoole.com/#/server/methods?id=finish

六、//官方给出的怎么给http客户端返回数据【一种】

代码语言:javascript
复制
$result   = $server->taskCo($tasks, 1);
$response->end('Test End, Result: ' . var_export($result, true));	

七、http可以接受websocket请求。

start()

启动 HTTP 服务器

启动后开始监听端口,并接收新的 HTTP 和 WebSocket 请求。

八、妈的,http可以被tcp客户端连接,但不能接受数据。

九、使用websocket完成http代码(两模式共存)

1、怎么判断是websocket连接还是http连接 isEstablished($fd)

2、$response->header()/end()必须写在foreach外面,否则报错。

代码语言:javascript
复制
$this->server->on('request', function ($request, $response) {
        	$response->header("Content-type", "text/html;charset=utf-8");
        	// 接收http请求从get获取message参数的值,给用户推送
        	// $this->server->connections 遍历所有websocket连接用户的fd,给所有用户推送
        	foreach ($this->server->connections as $fd) {
        	    // 需要先判断是否是正确的websocket连接,否则有可能会push失败
        	    if ($this->server->isEstablished($fd)) {
        	        $this->server->push($fd, $request->get['message']);
        	    }else{	///这里有可能是http连接,而不是websocket连接。 【connections属性是tcp的属性,不能确定http、websocket哪个在用】
        	    	// $response->header("Content-type", "text/html;charset=utf-8");
        	    	echo "没有这个else,http请求会有问题【没有websocket连接的前提下】";
        	    }
        	}
        	$response->end("<h1>没有websocket客户端连接. 服务器的连接:文件描述符#".$fd."</h1>");
            
        });

十、fd文件描述符找不到~session#1不存在

tcp客户端没有设置·$client->recv();

NOTICE swFactoryProcess_finish (ERRNO 1005): connection[fd=2] does not exists

tcp连接超时,让服务器找不到客户端fd了。(测试中使用了sleep)

NOTICE swServer_master_send (ERRNO 1005): send 2 byte failed, session#1 does not exist

十一、tcp每连接一次(刷新一次,即使用了close())服务器收到的fd文件描述符也会加1.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Http继承Tcp后,不能使用onConnect/onReceive
  • 二、tcp怎么长连接(只返回一次)
  • 三、由 一 可知: 有继承关系的只使用最后一个子类 是很强大类,包含功能最多。
  • 四、tcp客户端//一个链接只能使用一次send函数? 两次会拼接在一起发送。。。
  • 五、//官方解释:在 onTask 回调函数中 return 字符串,等同于调用 finish https://wiki.swoole.com/#/server/methods?id=finish
  • 六、//官方给出的怎么给http客户端返回数据【一种】
  • 七、http可以接受websocket请求。
  • 八、妈的,http可以被tcp客户端连接,但不能接受数据。
  • 九、使用websocket完成http代码(两模式共存)
    • 1、怎么判断是websocket连接还是http连接 isEstablished($fd)
      • 2、$response->header()/end()必须写在foreach外面,否则报错。
      • 十、fd文件描述符找不到~session#1不存在
      • 十一、tcp每连接一次(刷新一次,即使用了close())服务器收到的fd文件描述符也会加1.
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档