XSockets 4.0客户端ID替换?

时间:2014-08-02 15:40:19

标签: xsockets.net

我正在重新分解当前使用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;
}

1 个答案:

答案 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将不在那里,因为它在控制器级别)。