请问send_fail可以到那里检查原因

0

我是使用Linux Centos 6.5的环境,VM虚拟机,Workerman Gateway。


我在开启Status状态检查的时候,发现有send_fail的情况,由于传输都是本地网络,所以本地网络问题基本可以排除。请问我可以在那里检查日志,或是可以排查问题。这里先谢谢解答问题的大神。

socket.png
已邀请:

walkor

赞同来自: sfg007

有send fail  一般不是什么大问题,一般是由于客户端主动关闭连接导致的。


send_fail 有两种原因,
1、向客户端发送数据时发现客户端已经断开,由于是客户端主动断开的,属于正常现象,一般可以忽略


2、客户端接收缓冲区满,但是任然向客户端发送数据。比如浏览器最小化后浏览器自身一般不再接收websocket数据,导致数据积压在workerman的发送缓冲区(workerman为每个客户端建立了一个发送缓冲区),当缓冲数据达到上限值(TcpConnection::$maxSendBufferSize)后,这时候仍然有数据向这个客户端发送,那么便触发onError,send_fail计数加1。
参考:http://doc3.workerman.net/worker-development/on-buffer-full.html

Croesus - 80后IT男

赞同来自:

谢谢回复,不过有尝试写着一个HTML5的小游戏,由服务器发送步骤1 - 步骤7,如果步骤2没有发送成功,那么前台直接由步骤1跳到步骤3,那么显示会很奇怪,请问有什么方式可以确认收到吗?收不到再发一次。

walkor

赞同来自:

如果连接不断开,是肯定会发送到的,这个是tcp的特性,要么发送到,要么断开,不会有部分数据发到了,部分数据没发到的情况。

Croesus - 80后IT男

赞同来自:

我用的是websocket,请问也是同样的特性吗?因为我在自己写的日志,发现发送是发送不出去。所以想用一些方法确认发送到。

walkor

赞同来自:

websocket也是tcp的。一样的

Croesus - 80后IT男

赞同来自:

我找到问题了,是我的Timer谢的不好有时会跳过一秒,谢谢帮忙解答。

要回复问题请先登录注册