public void LocalQueueShouldNotExistAfterDisconnect() { IRemoteMessageHub test = MsmqMessageHub.Create(); test = test.WithConfiguration(new MsmqHubConfiguration { RemoteQueuePath = $".\\private$\\{test.Id}" }); test.Connect(); test.Disconnect(); Assert.IsFalse(MessageQueue.Exists($".\\private$\\{test.Id}")); }
static void Main(string[] args) { IRemoteMessageHub msgHub = WcfMessageHub.Create() .WithConfiguration(new WcfMessageHubConfiguration { RemoteEndpoint = "net.tcp://localhost:9099/DemoHub", Binding = new NetTcpBinding(), UseEncryption = true }); msgHub.Connect().Wait(); Guid userGuid = msgHub.Channel("Default").AddReceiver("public", (msg) => { ChatMessage message = msg as ChatMessage; if (message != null) { message.Received = DateTime.Now; Console.WriteLine(message.ToString()); } return(Task.CompletedTask); }); string username = "******"; Console.Write("Enter your username: "******"Welcome, {username}"); ChatMessage joined = new ChatMessage { Username = "******", MessageText = $"{username} has joined." }; msgHub.Channel("Default").Send("public", joined).Wait(); string outgoingMessage = Console.ReadLine(); while (outgoingMessage != CMD_EXIT && outgoingMessage != CMD_QUIT) { ChatMessage chat = new ChatMessage { Username = username, MessageText = outgoingMessage }; msgHub.Channel("Default").Send("public", chat).Wait(); outgoingMessage = Console.ReadLine(); } msgHub.Channel("Default").RemoveReceiver("public", userGuid); ChatMessage left = new ChatMessage { Username = "******", MessageText = $"{username} has left." }; msgHub.Channel("Default").Send("public", left).Wait(); msgHub.Disconnect(); }
static void Main(string[] args) { using (MsmqMessageHubService service = new MsmqMessageHubService(".\\private$\\AppHub", new AppConnectedClientRepository <MsmqConnectedClient>())) using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost")) { IRemoteMessageHub stateHub = MsmqMessageHub.Create().WithConfiguration(new MsmqHubConfiguration { RemoteQueuePath = ".\\private$\\AppHub" }); stateHub.Connect().Wait(); Guid stateHubChannelId = Guid.NewGuid(); stateHub.Channel("Users").AddReceiver("Add", (userData) => { return(Task.Factory.StartNew(async() => { RemoteUser user = userData as RemoteUser; if (user != null) { string serializedUser = JsonConvert.SerializeObject(user); IDatabase db = redis.GetDatabase(); if (await db.SetContainsAsync("AllUsers", serializedUser)) { await db.SetRemoveAsync("AllUsers", serializedUser); } await db.SetAddAsync("AllUsers", serializedUser); } })); }, stateHubChannelId); stateHub.Channel("Users").AddReceiver("Remove", (userData) => { return(Task.Factory.StartNew(async() => { RemoteUser user = userData as RemoteUser; if (user != null) { string serializedUser = JsonConvert.SerializeObject(user); IDatabase db = redis.GetDatabase(); if (await db.SetContainsAsync("AllUsers", serializedUser)) { await db.SetRemoveAsync("AllUsers", serializedUser); } } })); }, stateHubChannelId); stateHub.Channel("Content").AddReceiver("Update", (contentData) => { return(Task.Factory.StartNew(async() => { string content = contentData as string; IDatabase db = redis.GetDatabase(); await db.StringSetAsync("Content", content); })); }, stateHubChannelId); Console.ReadKey(); redis.GetDatabase().KeyDelete("AllUsers"); redis.GetDatabase().KeyDelete("Content"); stateHub.Channel("Users").RemoveReceiver("Add", stateHubChannelId); stateHub.Channel("Users").RemoveReceiver("Remove", stateHubChannelId); stateHub.Channel("Content").RemoveReceiver("Update", stateHubChannelId); stateHub.Disconnect(); } }