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

客戶端觸發(fā)服務(wù)端事件失敗

tender

前端事件觸發(fā):

socket.send('getInfoaaaa',uid);
socket.on('getInfoaaaReturn', function(msg){
   alert(msg);
});

服務(wù)端事件:

$socket->on('getInfoaaaa',function($uid)use($socket){
        $socket-> emit('getInfoaaaReturn',$uid);
});

開啟服務(wù)端監(jiān)聽之后 前端沒有收到結(jié)果,也沒有任務(wù)的報錯,之前寫的都是可以的,不知道為啥。。。求大神指教。

5350 7 0
7個回答

walkor 打賞

把代碼貼全

  • 暫無評論
tender

前端:

uid = 1022905503;
// 連接服務(wù)端
var socket = io('https://dzpk.752g.com:2120');
// 連接后登錄
socket.on('connect', function(){
    socket.emit('login', uid);
});
//以上為socket.io 連接代碼 不可省略
//*************************************************************************//

// 后端推送來消息時
socket.on('new_msg', function(msg){
    $('#content').html('收到消息:'+msg);
    $('.notification.sticky').notify();
});

// 后端推送來在線數(shù)據(jù)時
socket.on('update_online_count', function(online_stat){
    $('#online_box').html(online_stat);
});
socket.emit('getInfoaaaa',uid);
socket.on('getInfoaaaReturn', function(msg){
    alert(msg);
});

服務(wù)端:

$sender_io->on('connection', function($socket){

    // 當客戶端發(fā)來登錄事件時觸發(fā)
    $socket->on('login', function ($uid)use($socket){

        global $uidConnectionMap, $last_online_count, $last_online_page_count;

        // 已經(jīng)登錄過了
        if(isset($socket->uid)){
            return;
        }

        // 更新對應(yīng)uid的在線數(shù)據(jù)
        $uid = (string)$uid;
        if(!isset($uidConnectionMap))
        {
            $uidConnectionMap = 0;
        }
        // 這個uid有++$uidConnectionMap個socket連接
        ++$uidConnectionMap;
        // 將這個連接加入到uid分組,方便針對uid推送數(shù)據(jù)
        $socket->join($uid);
        $socket->uid = $uid;

        // 更新這個socket對應(yīng)頁面的在線數(shù)據(jù)   用來測試是否連接成功
        $socket->emit('update_online_count', "當前<b>{$last_online_count}</b>人在線,共打開<b>{$last_online_page_count}</b>個頁面");

    });

    //客戶端請求打打主播的牌面信息
    $socket->on('getInfoaaaa',function($uid)use($socket){
        $socket-> emit('getInfoaaaReturn',$uid);
    });

    // 當客戶端斷開連接是觸發(fā)(一般是關(guān)閉網(wǎng)頁或者跳轉(zhuǎn)刷新導(dǎo)致)
    $socket->on('disconnect', function () use($socket) {
        if(!isset($socket->uid))
        {
             return;
        }
        global $uidConnectionMap, $sender_io;
        // 將uid的在線socket數(shù)減一
        if(--$uidConnectionMap <= 0)
        {
            unset($uidConnectionMap);
        }
    });

});

里面還有其他的事件,結(jié)構(gòu)是 附件那樣子的,可以正常使用,但是上面的那個不著調(diào)為什么就不能用。。

  • 暫無評論
walkor 打賞

客戶端與服務(wù)端鏈接建立成功前無法給服務(wù)端emit事件,客戶端與服務(wù)端建立鏈接成功后會觸發(fā)connect事件,在connect事件觸發(fā)后才能emit。

socket.emit('getInfoaaaa',uid);
執(zhí)行的時候并沒觸發(fā)connect事件,也就是說這時候與服務(wù)端還沒建立鏈接,服務(wù)端當然收不到任何數(shù)據(jù)。

socket.on('connect', function(){
    socket.emit('login', uid);
});

你可以參考上面官網(wǎng)demo源碼向服務(wù)端emit login事件部分寫法,寫在connect事件的里面,也就是connect事件觸發(fā)后執(zhí)行emit才行。

  • 暫無評論
tender

我之前有五六個事件都是按照附件中的那樣寫的 但是 可以正常使用吖。。

  • 暫無評論
tender

但如果寫到connect事件里面,當連接服務(wù)端成功的時候就直接觸發(fā)了啊,但 我需要用戶的行為操作去觸發(fā)這個事件,我也有像附件中那樣寫的五個事件,可以正常使用,

那如果我之前的寫法是錯誤的,我需要用戶操作觸發(fā)事件時,這個怎么寫?

  • 暫無評論
walkor 打賞

上面說的是參考啊,寫在connect 里只是個參考,主要用意還是提示你要想emit成功必須保證connect事件已經(jīng)觸發(fā),也就是鏈接已經(jīng)建立。

比如像你截圖里socket.emit('buyGift', $uid, 790, 2, 20);是寫在click事件里的,用戶點擊的時候已經(jīng)觸發(fā)connect事件了,也就是用戶點擊的時候鏈接已經(jīng)建立了。

但是頁面js一加載就觸發(fā)socket.emit('getInfoaaaa',uid); 肯定是不行的,這時候基本可以確定connect事件沒觸發(fā),鏈接還沒建立。

  • 暫無評論
tender

還真是。。謝大牛,我里面還有一個那種直接觸發(fā)的 ,但是 可以使用。奇怪。。上面的問題把它放到 click事件中就可以了。。

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