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

websocket前端如何用js定時(shí)發(fā)送心跳包

abcd1996sc

請(qǐng)問(wèn)使用workerman3.X的websocket協(xié)議,前端怎么用js定時(shí)發(fā)送心跳包呀,我用了

self.setInterval("heart()",1000);
function heart()
{
    ws.send('heart');
}

好像無(wú)法發(fā)送,不知怎么做呢?

16253 2 0
2個(gè)回答

edgexie

onopen回調(diào)里 初始化一個(gè)定時(shí)器,發(fā)心跳。
感覺(jué)你是不是寫(xiě)錯(cuò)了,setInterval里的heart()你確定要加雙引號(hào)?
給你個(gè)setinterval的事例

    setInterval(show, 1000)

    function show(){
        console.log(1)
    }
  • abcd1996sc 2018-01-31

    謝謝你,我試了你的方法,這樣
    ws.onopen = function() {
    alert("連接成功");
    ws.send('tom');
    alert("給服務(wù)端發(fā)送一個(gè)字符串:tom");

    self.setInterval(heart(),1000);
    };

    function heart()
    {
    ws.send('heart');
    }
    但客戶端只發(fā)送了一個(gè)heart,后續(xù)沒(méi)有在發(fā)送,我試了輸出到控制臺(tái),只輸出一個(gè)heart,請(qǐng)問(wèn)你知道什么原因嗎

  • edgexie 2018-01-31

    你能仔細(xì)看看我怎么寫(xiě)的setinterval嗎?

  • abcd1996sc 2018-01-31

    @1239:我像你這么寫(xiě)
    var ws = new WebSocket("ws://127.0.0.1:2000");
    ws.onopen = function() {
    alert("連接成功");
    ws.send('5a6a1aa21dc07034e0c89260');
    alert("給服務(wù)端發(fā)送一個(gè)字符串:tom");
    // 使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。
    setInterval(show, 1000)
    };

    function show(){
        console.log(1)
    }

    可以定時(shí)輸出,但是 console.log(1)換為ws.send('heart')之后,就一次都不發(fā)送,服務(wù)器沒(méi)收到

edgexie

hi,我用你的代碼測(cè)試過(guò)了,我這是可以的。請(qǐng)查看你后端代碼是否有問(wèn)題。

  • abcd1996sc 2018-01-31

    謝謝你,我不加復(fù)雜邏輯測(cè)試可以了,猜測(cè)是之前后端代碼有定時(shí)查詢數(shù)據(jù)庫(kù),查詢到記錄更新就發(fā)送,里面有sleep()代碼,造成接收不到
    我使用定時(shí)器修改了代碼,已經(jīng)可以了,萬(wàn)分感謝你

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??