private void ChangeToMaster() { var action = this.ToMaster; if (action != null) { action(this, EventArgs.Empty); } //broadcast master key //if (HAContext.StoreEnable) //{ // HAContext.MasterKey = Guid.NewGuid().ToString("N"); // HAContext.SaveMasterKey(HAContext.MasterKey); //} var mk = Guid.NewGuid().ToString("N"); HAContext.SaveMasterKey(mk); }
private void ClientOnMessage(object sender, WebSocketMessageEventArgs e) { var client = (WebSocketClient)sender; var num = (int)client.UserState; // if (e.Opcode == WebSocketOpcode.Text) { var messageItems = e.Message.Split(':'); if (messageItems[0] == "elect") { //req , elect:xxxxx:masterkey //resp, elect:xxxxx:num var electNum = 0; if (messageItems.Length == 3 && messageItems[1] == this.electIdentity && int.TryParse(messageItems[2], out electNum)) { lock (this.electLock) { if (electNum == 1) { this.logManager.Message.WriteTimeLine("HAClient request ack node 1 from node {0}", client.UserState); this.elect1++; } else if (electNum == 2) { this.logManager.Message.WriteTimeLine("HAClient request ack node 2 from node {0}", client.UserState); this.elect2++; } else if (electNum == 3) { this.logManager.Message.WriteTimeLine("HAClient request ack node 3 from node {0}", client.UserState); this.elect3++; } // var count = 0; count += HAContext.Connectioned1 ? 1 : 0; count += HAContext.Connectioned2 ? 1 : 0; count += HAContext.Connectioned3 ? 1 : 0; //, ignore num 3 if (this.elect1 == 2) { this.taskQueue.Add("elected:1"); } else if (this.elect2 == 2) { this.taskQueue.Add("elected:2"); } else if (this.elect3 == 2) { this.taskQueue.Add("elected:3"); } } } } else if (messageItems[0] == "masterkey" && messageItems.Length == 2) { HAContext.SaveMasterKey(messageItems[1]); this.logManager.Message.WriteTimeLine("HAClient receive masterkey " + messageItems[1] + " from node " + num); this.readMasterKey = false; } } }