鍍金池/ 問答/PHP/ swoole 客戶端接收服務(wù)器的消息時(shí)候兩條會(huì)合并為一條

swoole 客戶端接收服務(wù)器的消息時(shí)候兩條會(huì)合并為一條

如下是服務(wù)器上的客戶端的日志

ConfigInit demo ... 
config server judge 
ConfigInit -> init 
get_swoole_client 
pms_config:9502 
ConfigInit -> init end 
Receive: s:22:"不合法的控制器!";
 
Receive: s:6:"wocao!";
 
ConfigInit demo ... 
config server judge 
ConfigInit -> init 
get_swoole_client 
pms_config:9502 
ConfigInit -> init end 
Receive: s:22:"不合法的控制器!";
s:6:"wocao!";
 
ConfigInit demo ... 
config server judge 
ConfigInit -> init 
get_swoole_client 
pms_config:9502 
ConfigInit -> init end 
Receive: s:22:"不合法的控制器!";
s:6:"wocao!";
 
ConfigInit demo ... 
config server judge 
ConfigInit -> init 
get_swoole_client 
pms_config:9502 
ConfigInit -> init end 
Receive: s:22:"不合法的控制器!";
 
Receive: s:6:"wocao!";

Receive 是接收的回調(diào)函數(shù) ,代碼如下:

/**
     * 收到值
     * @param \swoole_client $cli
     * @param $data
     */
    public function receive(\swoole_client $cli, $data)
    {
        echo "Receive: $data \n";

    }

服務(wù)器不停地(間隔1秒)分兩次向客戶端發(fā)送序列化的"不合法的控制器"和"wocao",有時(shí)候客戶端是分開接收的,有時(shí)候是合并在一起接收的,怎么辦?不能一起接收啊,呢個(gè)有沒法處理回調(diào)了!!!!
求解!
上面的代碼用于兩個(gè)service 之間的通信,參考的的swoole的: https://wiki.swoole.com/wiki/...

回答
編輯回答
乖乖噠

沒用過swoole,但是這個(gè)看起來是粘包了,你可以把Nagle算法關(guān)閉了試試,TCP_NODELAY。
或者接收方在應(yīng)用層處理

2017年4月26日 13:29
編輯回答
涼心人

自己設(shè)置協(xié)議

2017年3月17日 03:54