我正在重新分解当前使用XSockets 3.x的项目,我们使用旧的ClientGuid属性跟踪回放会话和客户端之间的映射。
使用4.0,ClientGuid的预期替代品是什么?我可以找到PersistentId和ConnectionId,但我不确定哪一个可以使用。
以下是3.x代码中问题的上下文...
public string CreatePlayback( string RecordingID ) {
string PlayID = SMFRecordServer.Instance.Player.Create( RecordingID, null );
XSocketMediaSink clientSink = new XSocketMediaSink( PlayID, this.ClientGuid, this );
lock ( m_tblSessions ){
if ( m_tblSessions.ContainsKey( ClientGuid ) ){
m_tblSessions[ ClientGuid ].Add( PlayID, clientSink );
}else{
m_tblSessions[ ClientGuid ] = new Dictionary<string,XSocketMediaSink>();
m_tblSessions[ ClientGuid ].Add( PlayID, clientSink );
}
}
SMFRecordServer.Instance.Player.AttachPlaySink( PlayID, clientSink );
return PlayID;
}
答案 0 :(得分:1)
4.0将是......
public string CreatePlayback( string RecordingID )
{
string PlayID = SMFRecordServer.Instance.Player.Create( RecordingID, null );
XSocketMediaSink clientSink = new XSocketMediaSink( PlayID, this.ConnectionId, this );
lock ( m_tblSessions )
{
if ( m_tblSessions.ContainsKey( ConnectionId) )
{
m_tblSessions[ ConnectionId].Add( PlayID, clientSink );
}
else
{
m_tblSessions[ ConnectionId] = new Dictionary<string,XSocketMediaSink>();
m_tblSessions[ ConnectionId].Add( PlayID, clientSink );
}
}
SMFRecordServer.Instance.Player.AttachPlaySink( PlayID, clientSink );
return PlayID;
}
3. *和4.0之间的一个很大区别是,您可以在同一连接上复用多个控制器。因此,ConnectionId对于您使用的每个控制器都是唯一的,而PersistentId用于连接本身。
所以在控制器上你可以得到this.ConnectionId(以前的ClientGuid)和this.PersistentId(以前的StorageGuid)。你也可以得到this.Context,它将包含有关客户端的信息(ConnectionId将不在那里,因为它在控制器级别)。