我使用Authorative服务器模型与Deepstream构建多人游戏。我的服务器只是另一个Node.JS客户端。有没有办法让我的服务器找出是否有任何连接的客户端断开或关闭了他们的连接?是否有暴露的事件或回调?
我可以建立一个心跳系统,但我想知道这是否可以避免。
答案 0 :(得分: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 );
}
}
这将跟踪任何断开连接,无论是故意的还是偶然的