請(qǐng)問(wèn)使用workerman3.X的websocket協(xié)議,前端怎么用js定時(shí)發(fā)送心跳包呀,我用了
self.setInterval("heart()",1000);
function heart()
{
ws.send('heart');
}
好像無(wú)法發(fā)送,不知怎么做呢?
在onopen
回調(diào)里 初始化一個(gè)定時(shí)器,發(fā)心跳。
感覺(jué)你是不是寫(xiě)錯(cuò)了,setInterval里的heart()
你確定要加雙引號(hào)?
給你個(gè)setinterval的事例
setInterval(show, 1000)
function show(){
console.log(1)
}
謝謝你,我試了你的方法,這樣
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)你知道什么原因嗎
@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)收到
hi,我用你的代碼測(cè)試過(guò)了,我這是可以的。請(qǐng)查看你后端代碼是否有問(wèn)題。
謝謝你,我不加復(fù)雜邏輯測(cè)試可以了,猜測(cè)是之前后端代碼有定時(shí)查詢數(shù)據(jù)庫(kù),查詢到記錄更新就發(fā)送,里面有sleep()代碼,造成接收不到
我使用定時(shí)器修改了代碼,已經(jīng)可以了,萬(wàn)分感謝你