2016-10-08 218 views
1

我使用Authorative服務器模型與Deepstream構建多人遊戲。我的服務器只是另一個Node.JS客戶端。有沒有辦法讓我的服務器查明是否有任何連接的客戶端斷開或關閉了他們的連接?是否存在暴露的事件或回調?Deepstream.io - 客戶端斷開連接時的服務器回調?

我可以建立一個心跳系統,但我不知道這是否可以避免。

+0

你使用任何的WebSockets保留任何斷開的軌道,無論是庫(Socket.io)爲您的遊戲? – Avinash

回答

1

是的,官方"presence" feature已經功能齊全,並在測試。但是,您可以通過在this tutorial位於this line of code處進行監聽來模擬其功能。

一般而言,所有客戶端都會訂閱特定於他們的狀態事件,例如,

ds.event.subscribe('status/' + name); 

服務器現在會聽,訂閱這些事件並推斷在線狀態:

ds.event.listen('status/.*', this._playerOnlineStatusChanged.bind(this)); 

_playerOnlineStatusChanged(match, isSubscribed) { 
     // Extract the player name from the status event 
     var name = match.replace('status/', ''); 

     if(isSubscribed) { 
      this.addPlayer(name); 
     } else { 
      this.removePlayer(name); 
     } 
    } 

這會有意或無意

相關問題