コード例 #1
0
 /// <summary>
 /// 发送消息给指定用户
 /// </summary>
 /// <typeparam name="T">数据类型</typeparam>
 /// <param name="userInfo">用户信息</param>
 /// <param name="channel">推送频道</param>
 /// <param name="data">推送数据</param>
 public void Publish <T>(UserInfo userInfo, string channel, T data)
 {
     if (ConnectionPool.ContainsKey(userInfo.UserId))
     {
         foreach (var session in ConnectionPool[userInfo.UserId])
         {
             Publish(session, channel, data);
         }
     }
 }
コード例 #2
0
        /// <summary>
        /// 关闭连接
        /// </summary>
        /// <param name="session">连接信息</param>
        /// <param name="reason">关闭原因</param>
        private void SessionClosed(WebSocketSession session, SuperSocket.SocketBase.CloseReason reason)
        {
            //关闭连接
            var userName = GetUserInfo(session).UserId;

            if (ConnectionPool.ContainsKey(userName))
            {
                ConnectionPool[userName].Remove(session);
            }
        }
コード例 #3
0
ファイル: ClientHandler.cs プロジェクト: neao2002/RS.Core
 /// <summary>
 /// 查找指定ID号的通信通道
 /// </summary>
 /// <param name="handlerid">ID号</param>
 /// <returns>如找到,则返回该通道,否则返回空</returns>
 public ClientHandler FindHandler(int handlerid)
 {
     if (ConnectionPool.ContainsKey(handlerid))
     {
         return(ConnectionPool[handlerid]);
     }
     else
     {
         return(null);
     }
 }
コード例 #4
0
        /// <summary>
        /// 加入连接
        /// </summary>
        /// <param name="session">连接信息</param>
        private void SessionConnected(WebSocketSession session)
        {
            var userId = GetUserInfo(session).UserId;

            lock (ConnectionPool)
            {
                if (!ConnectionPool.ContainsKey(userId))
                {
                    ConnectionPool.Add(userId, new List <WebSocketSession>());
                }
            }
            ConnectionPool[userId].Add(session);
        }