2013-08-19 93 views
1

Socket.IO使用心跳模式來確保客戶端仍處於連接狀態。 它會解決我的算法,如果我能夠訂閱服務器上的listenbeat事件。心跳上的Socket.io事件

例如: socket.on的 「心跳」, - > mycode的

這是可能的任何想法?

回答

1

心跳發生非常頻繁,你確定這是正確的嗎?我用的是「連接」事件,這似乎是它可能做你需要的東西:

connect: (url, options, connectCallback) => 
    someFunction = => 
     @doSomeRedisStuff() if @connected 

    @logger.debug "starting connection to url: #{url}" 
    @socket = @socket.connect(url, options) 
    @logger.debug "connecting ..." 
    @socket.on "connect", =>  
     @logger.info "connected (socket id #{(@socket.socket.sessionid)})" 
     @connected = true 
     setTimeout someFunction, 2000 
     connectCallback() if connectCallback? 
    @socket.on "disconnect", => 
     @connected = false 

如果到服務器的連接被中斷(如重新啓動服務器)的連接事件將揭開序幕,當連接來背部。 Socket.IO很聰明。

+0

如果每次會話或會話的每個部分都有一次連接。當客戶有良好的網絡時,連接可能會持續數小時或在我的應用程序的情況下。我想知道在此期間連接還活着。 – Luman75

+0

@ Luman75還有一個'socket.on'disconnect', - >'。我只是在某處存儲連接狀態並在這兩個回調中更新。 – jcollum

+0

當然有斷開。但是我想在正在進行的socket.io連接期間「戳」一些redis變量。 – Luman75