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; }
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; }; }