swoole学习的细节积累

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

在这里插入图片描述

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

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

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

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

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

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

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

$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外面,否则报错。

$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.

十二、 进程隔离的示例中,Google浏览器每刷新一次,有两次request问题。

妈的,浏览器自己会访问服务器地址下的facicon.ico。
必须开启’dispatch_mode’ => 1,才能轻易的看到效果。默认是2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值