我是使用Linux Centos 6.5的环境,VM虚拟机,Workerman Gateway。
我在开启Status状态检查的时候,发现有send_fail的情况,由于传输都是本地网络,所以本地网络问题基本可以排除。请问我可以在那里检查日志,或是可以排查问题。这里先谢谢解答问题的大神。
有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
谢谢回复,不过有尝试写着一个HTML5的小游戏,由服务器发送步骤1 - 步骤7,如果步骤2没有发送成功,那么前台直接由步骤1跳到步骤3,那么显示会很奇怪,请问有什么方式可以确认收到吗?收不到再发一次。
如果连接不断开,是肯定会发送到的,这个是tcp的特性,要么发送到,要么断开,不会有部分数据发到了,部分数据没发到的情况。
我用的是websocket,请问也是同样的特性吗?因为我在自己写的日志,发现发送是发送不出去。所以想用一些方法确认发送到。
websocket也是tcp的。一样的
我找到问题了,是我的Timer谢的不好有时会跳过一秒,谢谢帮忙解答。
我的timer 倒数计时会跳秒数,比如从20调到18秒,不会是19秒。怎么办,有偿867558055
有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
谢谢回复,不过有尝试写着一个HTML5的小游戏,由服务器发送步骤1 - 步骤7,如果步骤2没有发送成功,那么前台直接由步骤1跳到步骤3,那么显示会很奇怪,请问有什么方式可以确认收到吗?收不到再发一次。
如果连接不断开,是肯定会发送到的,这个是tcp的特性,要么发送到,要么断开,不会有部分数据发到了,部分数据没发到的情况。
我用的是websocket,请问也是同样的特性吗?因为我在自己写的日志,发现发送是发送不出去。所以想用一些方法确认发送到。
websocket也是tcp的。一样的
我找到问题了,是我的Timer谢的不好有时会跳过一秒,谢谢帮忙解答。
我的timer 倒数计时会跳秒数,比如从20调到18秒,不会是19秒。怎么办,有偿867558055