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

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

abcd1996sc

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

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

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

16118 2 0
2個回答

edgexie

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

    setInterval(show, 1000)

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

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

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

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

  • edgexie 2018-01-31

    你能仔細看看我怎么寫的setinterval嗎?

  • abcd1996sc 2018-01-31

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

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

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

edgexie

hi,我用你的代碼測試過了,我這是可以的。請查看你后端代碼是否有問題。

  • abcd1996sc 2018-01-31

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

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