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