public JsonRpcWebSocketConnection(WebSocketHandlerHub serverHub, IRpcWebSocketMiddleware wsMiddleware, string clientId = null)
        {
            this.serverHub         = serverHub ?? throw new ArgumentNullException(nameof(serverHub));
            this.requestPending    = new ConcurrentDictionary <string, TaskCompletionSource <IMessage> >();
            this.ClientId          = clientId ?? Guid.NewGuid().ToString("N");
            this.wsMiddleware      = wsMiddleware ?? new RpcWebSocketMiddleware();
            this.registeredMethods = new string[0];

            this.serverHub.OnMessageReceive += Hub_OnMessageReceive;
        }
Пример #2
0
        public RealTimeRpcWebSocketMiddleware(
            IRtConnector connector,
            WebSocketHandlerHub hub,
            TagChangeTrackerManager trackerManager,
            ILoggerFactory loggerFactory,
            ProcessInfoStatistics processInfo,
            TimeSpan?refreshInterval = default)
        {
            this.logger          = loggerFactory.CreateLogger(nameof(RealTimeRpcWebSocketMiddleware));
            this.hub             = hub;
            this.trackerManager  = trackerManager;
            this.processInfo     = processInfo;
            this.connector       = connector;
            this.wsTags          = new ConcurrentDictionary <WebSocketHandler, List <TagChangeTracker> >();
            this.refreshInterval = refreshInterval ?? TimeSpan.FromSeconds(1);

            this.connector.Connected += (s, e) => { processInfo.ConnectedDateTime = DateTime.Now; };
        }