private void _raiseUserChanged(WSClientInfo info) { if (this.OnWSUserStateChanged != null) { this.OnWSUserStateChanged(info); } }
private void _processUser(string command, string userName, string win) { lock (_lockObject) { foreach (var user in _users) { if (user.UserName == userName && user.WIN == win) { user.Pulse++; user.Command = command; _raiseUserChanged(user); return; } } if (command == "tapi") { command = "tapi-reg"; } WSClientInfo info = new WSClientInfo() { UserName = userName, WIN = win, Command = command, Pulse = 1 }; _users.Add(info); _raiseUserChanged(info); } }
public void SetCanReceiveMessage(string userName, string win, bool can) { lock (_lockObject) { WSClientInfo user = _findUser(userName, win); if (user != null) { user.CanReceiveMessage = can; } } }
private WSClientInfo _registerUser(string userName, string win) { lock (_lockObject) { WSClientInfo info = new WSClientInfo() { UserName = userName, WIN = win, Command = "reg", Pulse = 1 }; _users.Add(info); _raiseUserChanged(info); return(info); } }
public override void ResponseToClient(TcpClient client) { string user = "******"; string win = "0"; using (var stream = client.GetStream()) { int waitTime = 1000 * 60; if (_waitSocketData(stream, waitTime)) { List <byte> requestList = _readSocketData(stream); _sendHandshake(stream, requestList); while (true) { if (!_waitSocketData(stream, waitTime)) { break; } requestList = _readSocketData(stream); byte[] msg = requestList.ToArray(); string text = _decodeMessage(msg); stream.Flush(); //if(text == "tapi") //{ // string message = Manager.Instance.HP_TAPI_Message; // _sendMessage(stream,message); // Manager.Instance.HP_TAPI_Message = null; //} //else //{ string[] data = text.Split(';'); if (data.Length == 2) { string[] n1 = data[0].Split(':'); string command = n1[0]; user = n1[1]; string[] n2 = data[1].Split(':'); win = n2[1]; WSClientInfo info = _findUser(user, win); if (info == null) { info = _registerUser(user, win); } if (command == "tapi") { _processUser(command, user, win); string message = info.CanReceiveMessage ? info.Message : Manager.Instance.HP_TAPI_Default_Message; _sendMessage(stream, message); info.Message = Manager.Instance.HP_TAPI_Default_Message; // Manager.Instance.HP_TAPI_Message = null; } else if (command == "reg") { this.RaiseEvent(text); _processUser(command, user, win); string message = "{\"result\":\"reg\",\"data\":\"empty\"}"; _sendMessage(stream, message); } else if (command == "unreg") { this.RaiseEvent(text); _processUser(command, user, win); string message = "{\"result\":\"unreg\",\"data\":\"empty\"}"; _sendMessage(stream, message); break; } else { this.RaiseEvent(text); _processUser(command, user, win); } } else { string message = Manager.Instance.HP_TAPI_Message; _sendMessage(stream, message); } } //} } _processUser("closed", user, win); if (!_isWorking) { _sendClose(stream); } client.Close(); // this.RaiseEvent("WS CLIENT stopped."); } }