国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

PHP 的socket連接 workerman 的websocket 問題!

zjfree
function SendSocketMsg(){
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
    $result = socket_connect($socket,'127.0.0.1', 2346);
    /*
    if ($result == false)
    {
        echo 'connect error!';
        return false;
    }
    */

    $msg = '@hello socket11111';
    if (socket_write($socket, $msg, strlen($msg)) === false)  
    {  
        echo "socket_write() failed: reason: " . socket_strerror(socket_last_error()) ."/n";  
        return false;
    }  

    //$recv_data = socket_read($socket,1024);
    socket_close ($socket);
    //return $recv_data;
}
SendSocketMsg();

workerman中 onConnect 可以觸發(fā),但沒有收到任何數(shù)據(jù),PHP代碼也沒有錯誤。
使用HTML5 連接數(shù)據(jù)正常。

6953 1 0
1個回答

walkor 打賞

websocket服務需要用websocket協(xié)議連接,才能通訊。
就像http協(xié)議,你要用瀏覽器通過http協(xié)議取訪問,服務端才能正確收到。
msyql數(shù)據(jù)庫服務,你要用mysql協(xié)議才能正確訪問。

直接socket連,發(fā)的數(shù)據(jù)不符合websocket通訊協(xié)議,服務端自然無法識別你發(fā)的是什么,所以收不到。

如果直接socket連,可以直接基于tcp通訊,就不要用websocket協(xié)議,
new XXX('websocket://0.0.0.0:2346');
改成
new XXX('tcp://0.0.0.0:2346');
就可以通訊了,但是會有粘包問題。
協(xié)議相關請參考workerman手冊,或者網(wǎng)上看一些文章

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??