示例#1
0
        public void analyse(string msg, Fleck.IWebSocketConnection clientSock)
        {
            //int totalLen = buffer.Length;
            //int currentIndex = 0;
            //while (currentIndex < totalLen)
            //{
            //    if (verify(buffer) == false)
            //        break;
            //    int DataLength = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(buffer, 8 + currentIndex));
            //    byte[] dataBuffer = new byte[DataLength];
            //    Array.Copy(buffer, 12 + currentIndex, dataBuffer, 0, DataLength);

            //    string msg = System.Text.Encoding.UTF8.GetString(dataBuffer);
            //    MsgPair msgPair = dispatch(msg, clientSock);
            //    currentIndex += DataLength + 12;
            //   // ClientUpdateMessage(byteMessage, clientSock, 2);
            //    if (msgPair != null)
            //    sendMsgToServer(msgPair.msg, clientSock, msgPair.type);
            //}
            if (!verify(msg))
            {
                return;
            }
            msg = msg.Substring(16);
            MsgPair msgPair = dispatch(msg, clientSock);

            if (msgPair != null)
            {
                sendMsgToServer(msgPair.msg, clientSock, msgPair.type);
            }
        }
示例#2
0
        public void sendMsgToServer(byte[] bytes, Fleck.IWebSocketConnection clientSock, GlobalMessage msgType)
        {
            Socket value = null;

            if (msgType.Equals(GlobalMessage.PACKETERROR))
            {
                closeClient(clientSock);
                return;
            }
            else if (msgType == GlobalMessage.LOGIN)
            {
                ClientTerminal c = new ClientTerminal();
                c.Connected      += new TCPTerminal_ConnectDel(ServerConnected);
                c.MessageRecived += new TCPTerminal_MessageRecivedDel(ServerMessageRecived);
                c.Disconncted    += new TCPTerminal_DisconnectDel(ServerConnectionDroped);
                //clientTerminal = c;

                createSocket(c);
                value = c.m_socClient;
                toServer.Add(value, c);

                myGlobals.ClientServer.Add(clientSock, value);
                myGlobals.ServerClient.Add(value, clientSock);
                connect2Server(c);
            }
            else
            {
                value = myGlobals.ClientServer[clientSock];
            }

            //if (clientMsgProcess.messageType == clientMsgType.KEEPALIVEACK)
            //    clientHeartbeats[key].keepalive();

            toServer[value].SendMessage(bytes);
        }
示例#3
0
        string createConfRoom(string msg, Fleck.IWebSocketConnection clientSock)
        {
            string others       = TextFollowing(msg, "OTHERS:");
            string operatorName = TextFollowing(msg, "OPERATORNAME:");
            string localRoomId  = TextFollowing(msg, "LOCALCONFROOMID:");
            string operatorNum  = TextFollowing(msg, "OPERATORNUMBER:");
            string serverRoomId = "";


            string type = "SIP";

            Numbers tmpNumbers = processNumbers(others, type);

            RoomRecord room = new RoomRecord();

            room.operatorNum = operatorNum;

            if (tmpNumbers == null)
            {
                room.sipNumbers.Add(operatorNum);
                myGlobals.myRooms.rooms.Add(operatorNum, room);
                return(msg);
            }


            PlanRecord plan = new PlanRecord();

            plan.pocNumbers  = tmpNumbers.pocNumbers;
            plan.operatorNum = operatorNum;

            int flag = 0;

            foreach (var kv in tmpNumbers.pocNumbers)
            {
                if (!myGlobals.gatewayData.gateway[kv.Key].isOccupied)
                {
                    myGlobals.gatewayData.gateway[kv.Key].isOccupied = true;
                    tmpNumbers.sipNumbers.Add(myGlobals.gatewayData.gateway[kv.Key].sipNo);
                    flag = 1;
                }
            }

            if (flag == 1)
            {
                myGlobals.myPlans.plans.Add(operatorNum, plan);
            }


            string sipNumbers = string.Join(";", tmpNumbers.sipNumbers.ToArray());

            msg = msg.Replace(others, sipNumbers);

            room.sipNumbers = tmpNumbers.sipNumbers;
            room.sipNumbers.Add(operatorNum);
            myGlobals.pocSendDeal.addMember(operatorName, localRoomId, serverRoomId, tmpNumbers.pocNumbers);

            myGlobals.myRooms.rooms.Add(operatorNum, room);

            return(msg);
        }
示例#4
0
        string kickConfMember(string msg, Fleck.IWebSocketConnection clientSock)
        {
            string others       = TextFollowing(msg, "NUMBER:");
            string operatorName = TextFollowing(msg, "OPERATORNAME:");
            string serverRoomId = TextFollowing(msg, "SERVERROOMID:");
            string localRoomId  = TextFollowing(msg, "LOCALCONFROOMID:");

            //string type = TextFollowing(msg, "TYPE:");

            string  type       = "SIP";
            Numbers tmpNumbers = processNumbers(others, type);

            string sipNumbers = string.Join(";", tmpNumbers.sipNumbers.ToArray());

            msg = msg.Replace(others, sipNumbers);


            myGlobals.pocSendDeal.deleteMember(operatorName, localRoomId, serverRoomId, tmpNumbers.pocNumbers);

            if (tmpNumbers.sipNumbers.Count == 0)
            {
                return(null);
            }

            string operatorNum = myGlobals.myRooms.getOperatorNum(serverRoomId);

            foreach (var value in tmpNumbers.sipNumbers)
            {
                myGlobals.myRooms.rooms[operatorNum].sipNumbers.Remove(value);
            }

            return(msg);
        }
示例#5
0
        public void ServerConnectionDroped(Socket serverSock)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new TCPTerminal_DisconnectDel(ServerConnectionDroped), serverSock);
                return;
            }

            //  long l = socket.Handle.ToInt64();
            //if (serverHeartbeats.ContainsKey(l))
            //    serverHeartbeats.Remove(l);
            cmdConnect2.Enabled = true;
            cmdClose2.Enabled   = false;

            if (serverTimers.ContainsKey(serverSock))
            {
                serverTimers.Remove(serverSock);
            }

            Fleck.IWebSocketConnection clientSock = myGlobals.ServerClient[serverSock];

            closeServer(serverSock);
            closeClient(clientSock);

            PublishMessage(logBox2, "Server has been disconnected!");
        }
示例#6
0
 public void sendMsgToClient(string msg, Socket serverSock, GlobalMessage msgType)
 {
     Fleck.IWebSocketConnection clientSock = myGlobals.ServerClient[serverSock];
     //long sock = clientSock.Handle.ToInt64();
     if (msgType == GlobalMessage.LOGINACKFAILED)
     {
         //toClient.DistributeMessage(bytes, clientSock);
         wsServer.sendMessage(clientSock, msg);
         closeServer(serverSock);
         closeClient(clientSock);
     }
     else if (msgType.Equals(GlobalMessage.LOGINACKOK))
     {
         //Heartbeat cTimer = new Heartbeat();
         //cTimer.timeout += new Heartbeat.timerDelegate(clientTimeout);
         clientHeartbeat cTimer = new clientHeartbeat();
         cTimer.timeout += new clientHeartbeat.timerDelegate(clientTimeout);
         cTimer.start();
         clientTimers.Add(clientSock, cTimer);
         //toClient.DistributeMessage(bytes, clientSock);
         wsServer.sendMessage(clientSock, msg);
     }
     else if (msgType == GlobalMessage.LOGOUTACKOK)
     {
         //toClient.DistributeMessage(bytes, clientSock);
         wsServer.sendMessage(clientSock, msg);
         closeServer(serverSock);
         closeClient(clientSock);
     }
     else
     {
         //toClient.DistributeMessage(bytes, clientSock);
         wsServer.sendMessage(clientSock, msg);
     }
 }
示例#7
0
        //private void closeTerminal(Socket clientSock)
        //{
        //    //toClient.MessageRecived -= new TCPTerminal_MessageRecivedDel(ClientMessageRecived);
        //    //toClient.ClientConnect -= new TCPTerminal_ConnectDel(ClientConnected);
        //    //toClient.ClientDisconnect -= new TCPTerminal_DisconnectDel(ClientDisConnected);

        //    toClient.Close(clientSock);
        //}

        public void serverTimeout(Socket serverSock)
        {
            //toServer[value].Close();
            // serverHeartbeats.Remove(value);
            closeServer(serverSock);
            Fleck.IWebSocketConnection clientSock = myGlobals.ServerClient[serverSock];
            closeClient(clientSock);
        }
 public static WebSocketConnectionInfo CreateConnectionInfo(FleckImpl.IWebSocketConnection socket)
 {
     return(new WebSocketConnectionInfo(
                $"{socket.ConnectionInfo.ClientIpAddress}:{socket.ConnectionInfo.ClientPort}",
                socket.ConnectionInfo.Path,
                socket.ConnectionInfo.Headers,
                socket.ConnectionInfo.Cookies));
 }
示例#9
0
        public void clientTimeout(Fleck.IWebSocketConnection clientSock)
        {
            // closeTerminal(key);
            // clientHeartbeats.Remove(key);
            closeClient(clientSock);
            Socket serverSock = myGlobals.ClientServer[clientSock];

            closeServer(serverSock);
        }
        public FleckWebSocketConnection(FleckImpl.IWebSocketConnection socket)
        {
            this._socket = socket ?? throw new ArgumentNullException(nameof(socket));

            socket.OnMessage = message => this.OnMessage?.Invoke(message);
            socket.OnBinary  = data => this.OnMessage?.Invoke(data.DecodeToString());
            socket.OnError   = ex => this.OnError?.Invoke(ex);
            socket.OnClose   = () => this.OnClose?.Invoke();
        }
示例#11
0
        public void sendMsgToClient2(string msg, Fleck.IWebSocketConnection clientSock, GlobalMessage msgType)
        {
            long sock = clientSock.GetHashCode();

            //toClient.DistributeMessage(bytes, clientSock);
            wsServer.sendMessage(clientSock, msg);
            PublishMessage(logBox1, string.Format("Client {0}(socket:{1}) has been disconnected!", clientSock.ConnectionInfo, sock));
            //  toClient.Close(clientSock);
            wsServer.allSockets.Remove(clientSock);
        }
示例#12
0
        void ClientConnected(Fleck.IWebSocketConnection socket)
        {
            long sock = socket.GetHashCode();

            PublishMessage(logBox1, string.Format("Client {0}(socket:{1}) has been connected!", socket.ConnectionInfo, sock));

            //long key = socket.Handle.ToInt64();
            //Heartbeat clientTimer = new Heartbeat();
            //clientTimer.timeout += new Heartbeat.timerDelegate(clientTimeout);
            // clientHeartbeats.Add(key, clientTimer);
        }
示例#13
0
 public string getOperatorName(Fleck.IWebSocketConnection s)
 {
     foreach (var item in operators)
     {
         if (item.Value.sock == s)
         {
             return(item.Key);
         }
     }
     return(null);
 }
示例#14
0
 public void clientPubMessage(string msg, Fleck.IWebSocketConnection clientSock, GlobalMessage msgType)
 {
     if (msgType.Equals(GlobalMessage.KEEPALIVEACK))
     {
         clientTimers[clientSock].keepalive();
         PublishMessage(keepalive1, msg);
     }
     else
     {
         PublishMessage(messageBox1, msg);
     }
 }
示例#15
0
        private void OnClientConnected(Fleck.IWebSocketConnection context)
        {
            if (WebSocketConnected != null)
            {
                var socket = new FleckWebSocket(context);

                WebSocketConnected(this, new WebSocketConnectEventArgs
                {
                    WebSocket = socket,
                    Endpoint  = context.ConnectionInfo.ClientIpAddress + ":" + context.ConnectionInfo.ClientPort
                });
            }
        }
示例#16
0
        string addMemberNotify(string msg, Fleck.IWebSocketConnection clientSock)
        {
            string number = TextFollowing(msg, "NUMBER:");
            string type   = TextFollowing(msg, "TYPE:");

            USER_INFO userInfo = new USER_INFO();

            userInfo.name  = number;
            userInfo.phone = number;
            userInfo.type  = type;
            myGlobals.dbManager.AddUser(userInfo);
            return(msg);
        }
示例#17
0
        private void FleckServiceConfig(FleckImpl.IWebSocketConnection socket)
        {
            // Throw an exception if the "OnOpen" method has not been defined, so that clients cannot connect without validation
            socket.OnOpen = () =>
            {
                // Since delegates are immutable, assign the delegate to a variable to make sure that the value doesn't change
                // in the middle of the function (i.e. ensure thread-safety and avoid locking)
                var onOpenFunc = this.OnOpen;
                if (onOpenFunc == null)
                {
                    throw new NullReferenceException($"The {nameof(OnOpen)}() callback must be set in order to accept connections");
                }

                onOpenFunc(new FleckWebSocketConnection(socket), FleckWebSocketConnection.CreateConnectionInfo(socket));
            };
        }
示例#18
0
        MsgPair dispatch(string msg, Fleck.IWebSocketConnection clientSock)
        {
            int separateIndex = msg.IndexOf("\r\n");

            if (separateIndex != -1)
            {
                string msgHead = msg.Substring(0, separateIndex);
                int    index   = msgIndex[msgHead];

                ClientMsgType msgType = (ClientMsgType)index;

                GlobalMessage globalMsg;

                if (msgType.Equals(ClientMsgType.LOGIN))
                {
                    globalMsg = GlobalMessage.LOGIN;
                }
                else if (msgType.Equals(ClientMsgType.LOGOUT))
                {
                    globalMsg = GlobalMessage.LOGOUT;
                }
                else if (msgType.Equals(ClientMsgType.KEEPALIVEACK))
                {
                    globalMsg = GlobalMessage.KEEPALIVEACK;
                }
                else
                {
                    globalMsg = GlobalMessage.DATA;
                }
                clientPublishMessage(msg, clientSock, globalMsg);

                string newMsg = ClientMsgDelegate[index](msg, clientSock);
                if (newMsg == null)
                {
                    return(null);
                }
                byte[] buffer = addHead(newMsg);

                MsgPair msgPair = new MsgPair(buffer, globalMsg);

                return(msgPair);
            }
            else
            {
                return(null);
            }
        }
示例#19
0
        string addConfMember(string msg, Fleck.IWebSocketConnection clientSock)
        {
            string others       = TextFollowing(msg, "OTHERS:");
            string operatorName = TextFollowing(msg, "OPERATORNAME:");
            string serverRoomId = TextFollowing(msg, "SERVERROOMID:");
            string localRoomId  = TextFollowing(msg, "LOCALCONFROOMID:");

            string type = TextFollowing(msg, "SPTYPE:");

            Numbers tmpNumbers = processNumbers(others, type);

            if (tmpNumbers == null)
            {
                return(null);
            }
            foreach (var kv in tmpNumbers.pocNumbers)
            {
                if (myGlobals.gatewayData.gateway[kv.Key].serverRoomId == serverRoomId)
                {
                }
                else if (!myGlobals.gatewayData.gateway[kv.Key].isOccupied)
                {
                    myGlobals.gatewayData.gateway[kv.Key].isOccupied = true;
                    tmpNumbers.sipNumbers.Add(myGlobals.gatewayData.gateway[kv.Key].sipNo);
                }
            }

            string sipNumbers = string.Join(";", tmpNumbers.sipNumbers.ToArray());

            msg = msg.Replace(others, sipNumbers);
            myGlobals.pocSendDeal.addMember(operatorName, localRoomId, serverRoomId, tmpNumbers.pocNumbers);

            if (tmpNumbers.sipNumbers.Count == 0)
            {
                return(null);
            }

            string operatorNum = myGlobals.myRooms.getOperatorNum(serverRoomId);

            foreach (var value in tmpNumbers.sipNumbers)
            {
                myGlobals.myRooms.rooms[operatorNum].sipNumbers.Add(value);
            }

            return(msg);
        }
示例#20
0
///---------------------------------------------------------------------------------
/// Server
///---------------------------------------------------------------------------------

        public void closeServer(Socket serverSock)
        {
            //if (!myGlobals.ServerClient.ContainsKey(serverSock))
            //    return

            Fleck.IWebSocketConnection clientSock = null;
            if (myGlobals.ServerClient.ContainsKey(serverSock))
            {
                clientSock = myGlobals.ServerClient[serverSock];
            }

            if (toServer.ContainsKey(serverSock))
            {
                toServer[serverSock].Close();
                toServer.Remove(serverSock);
            }
            if (myGlobals.ClientServer.ContainsKey(clientSock))
            {
                myGlobals.ClientServer.Remove(clientSock);
            }
            if (myGlobals.ServerClient.ContainsKey(serverSock))
            {
                myGlobals.ServerClient.Remove(serverSock);
            }

            string operatorName = myGlobals.operatorData.getOperatorName(clientSock);

            if (myGlobals.operatorData.operators.ContainsKey(operatorName))
            {
                myGlobals.operatorData.Remove(operatorName);
            }

            if (toServer.ContainsKey(serverSock))
            {
                toServer.Remove(serverSock);
            }
            if (serverTimers.ContainsKey(serverSock))
            {
                serverTimers[serverSock].stop();
                serverTimers.Remove(serverSock);
            }

            // long sock = serverSock.Handle.ToInt64();
            PublishMessage(logBox2, string.Format("Server has been disconnected!"));
        }
示例#21
0
        string stopConfRoom(string msg, Fleck.IWebSocketConnection clientSock)
        {
            string others       = TextFollowing(msg, "OTHERS:");
            string operatorName = TextFollowing(msg, "OPERATORNAME:");
            string serverRoomId = TextFollowing(msg, "SERVERROOMID:");
            string localRoomId  = TextFollowing(msg, "LOCALCONFROOMID:");
            string type         = "SIP";


            Numbers tmpNumbers = processNumbers(others, type);

            // string sipNumbers = string.Join(";", tmpNumbers.sipNumbers.ToArray());

            //foreach (var kv in tmpNumbers.pocNumbers)
            //{
            //    sipNumbers += ";" + myGlobals.gatewayData.gateway[kv.Key].sipNo;
            //}
            //foreach (var kv in myGlobals.gatewayData.gateway)
            //{
            //    if (kv.Value.serverRoomId == serverRoomId)
            //        sipNumbers += ";" + kv.Value.sipNo;
            //}
            //msg = msg.Replace(others, sipNumbers);

            myGlobals.pocSendDeal.deleteMember(operatorName, localRoomId, serverRoomId, tmpNumbers.pocNumbers);

            string operatorNum = myGlobals.myRooms.getOperatorNum(serverRoomId);

            List <string> sipNumbers = myGlobals.myRooms.rooms[operatorNum].sipNumbers;


            if (sipNumbers.Count == 0)
            {
                return(null);
            }
            string sipNumbersStr = string.Join(";", sipNumbers.ToArray());

            msg = msg.Replace(others, sipNumbersStr);


            return(msg);
        }
示例#22
0
        void ClientDisConnected(Fleck.IWebSocketConnection socket)
        {
            //Heartbeat heartbeat = new Heartbeat(key);
            // heartbeats.Add(key, heartbeat);
            //long key = socket.Handle.ToInt64();
            //if (clientHeartbeats.ContainsKey(key))
            //    clientHeartbeats.Remove(key);
            long sock = socket.GetHashCode();

            if (myGlobals.ClientServer.ContainsKey(socket))
            {
                Socket serverSock = myGlobals.ClientServer[socket];
                //PublishMessage(logBox1, string.Format("Client {0}(socket:{1}) has been disconnected!", socket.ConnectionInfo, sock));
                closeClient(socket);
                closeServer(serverSock);
            }
            else
            {
                // PublishMessage(logBox1, string.Format("Client {0}(socket:{1}) has been disconnected!", socket.ConnectionInfo, sock));
                closeClient(socket);
            }
        }
示例#23
0
        string login(string msg, Fleck.IWebSocketConnection clientSock)
        {
            string operatorName = TextFollowing(msg, "OPERATORNAME:");

            //myGlobals.clientSock_operators.Add(clientSock, operatorName);
            //myGlobals.operators_clientSock.Add(operatorName, clientSock);
            if (!myGlobals.operatorData.operators.ContainsKey(operatorName))
            {
                myGlobals.operatorData.addOpeartor(operatorName, clientSock);
            }
            else
            {
                string msg2Client = "LOGINACK\r\n"
                                    + "STATUS:FAILED\r\n"
                                    + "REASIONCODE:4\r\n";

                //byte[] bytes = addHead(msg2Client);
                string flagStr = "-1-2-1-2-1-2-1-2";
                string total   = flagStr + msg2Client;
                sendMsgToClient(total, clientSock, GlobalMessage.DATA);
            }
            return(msg);
        }
示例#24
0
 string setConfHostVideo(string msg, Fleck.IWebSocketConnection clientSock)
 {
     return(msg);
 }
示例#25
0
 void ClientMessageRecived(Fleck.IWebSocketConnection socket, string msg)
 {
     // long key = socket.Handle.ToInt64();
     //analysisClient(buffer, key);
     clientMsgProcess.analyse(msg, socket);
 }
示例#26
0
 string unSetConfBroadcast(string msg, Fleck.IWebSocketConnection clientSock)
 {
     return(msg);
 }
示例#27
0
 string switchConfRoom(string msg, Fleck.IWebSocketConnection clientSock)
 {
     return(msg);
 }
示例#28
0
        public void delAckDeal(string msg)
        {
            string serverRoomId = TextFollowing(msg, "SERVERROOMID:");
            string localRoomId  = TextFollowing(msg, "LOCALCONFROOMID:");
            string type         = TextFollowing(msg, "TYPE:");
            string number       = TextFollowing(msg, "NUMBER:");
            string status       = TextFollowing(msg, "STATUS:");
            string operatorName = TextFollowing(msg, "OPERATORNAME:");

            Fleck.IWebSocketConnection clientSock = myGlobals.operatorData.getOperatorSock(operatorName);
            Socket serverSock = myGlobals.ClientServer[clientSock];

            //foreach (var kv in myGlobals.myPlans.plans.Values)
            //{
            //    if (kv.Contains(number))
            //        serverRoomId = kv.serverRoomId;
            //}

            if (status == "OK")
            {
                USER_INFO oldUser = new USER_INFO();
                USER_INFO newUser = new USER_INFO();

                oldUser.phone        = number;
                newUser.localRoomId  = "0";
                newUser.serverRoomId = "0";
                myGlobals.dbManager.UpdateUser(newUser, oldUser);



                string msg2Client = "QUITCONFROOM\r\n"
                                    + "ISOPERATOR:0\r\n"
                                    + "OPERATORNAME:" + operatorName + "\r\n"
                                    + "LOCALCONFROOMID:" + localRoomId + "\r\n"
                                    + "SERVERROOMID:" + serverRoomId + "\r\n"
                                    + "NUMBER:" + number + "\r\n";
                // byte[] bytes = System.Text.Encoding.UTF8.GetBytes(msg2Client);
                // byte[] bytes = addHead(msg2Client);
                string flagStr = "-1-2-1-2-1-2-1-2";
                string total   = flagStr + msg2Client;
                //ServerUpdateMessage(bytes, serverSock, 2);
                sendMsgToClient(total, serverSock, GlobalMessage.ALIYUNDATA);

                if (myGlobals.gatewayData.gateway[type].isConnnected == true)
                {
                    USER_INFO tmpUserInfo = new USER_INFO();
                    tmpUserInfo.type         = type;
                    tmpUserInfo.localRoomId  = localRoomId;
                    tmpUserInfo.serverRoomId = serverRoomId;

                    USER_INFO[] userRecords = myGlobals.dbManager.GetUser(tmpUserInfo);

                    if (userRecords.Length == 0)
                    {
                        string sipNum     = myGlobals.gatewayData.getNumber(type);
                        string msg2Server = "KICKCONFMEMBER\r\n"
                                            + "OPERATORNAME:" + operatorName + "\r\n"
                                            + "LOCALCONFROOMID:" + localRoomId + "\r\n"
                                            + "SERVERROOMID:" + serverRoomId + "\r\n"
                                            + "NUMBER:" + sipNum + "\r\n";

                        // byte[] byteMessage = System.Text.Encoding.UTF8.GetBytes(msg2Server);
                        byte[] buffer = addHead(msg2Server);
                        sendMsgToServer(buffer, clientSock, GlobalMessage.ALIYUNDATA);
                    }
                }
            }
        }
示例#29
0
        public void addAckDeal(string msg)
        {
            string serverRoomId = TextFollowing(msg, "SERVERROOMID:");
            string localRoomId  = TextFollowing(msg, "LOCALCONFROOMID:");
            string type         = TextFollowing(msg, "TYPE:");
            string number       = TextFollowing(msg, "NUMBER:");
            string status       = TextFollowing(msg, "STATUS:");
            string operatorName = TextFollowing(msg, "OPERATORNAME:");


            Fleck.IWebSocketConnection clientSock = myGlobals.operatorData.getOperatorSock(operatorName);
            Socket serverSock = myGlobals.ClientServer[clientSock];

            foreach (var kv in myGlobals.myPlans.plans.Values)
            {
                if (kv.Contains(number))
                {
                    serverRoomId = kv.serverRoomId;
                }
            }

            if (status == "OK")
            {
                myGlobals.mre2.WaitOne();
                myGlobals.mre1.Reset();
                // if (myGlobals.gatewaySip.active[type] == "1")
                if (myGlobals.gatewayData.gateway[type].isConnnected)
                {
                    string msg2Client = "MEMBERCONNECTED\r\n"
                                        + "NUMBER:" + number + "\r\n"
                                        + "ISOPERATOR:0\r\n"
                                        + "OPERATORNAME:" + operatorName + "\r\n"
                                        + "LOCALCONFROOMID:" + localRoomId + "\r\n"
                                        + "SERVERROOMID:" + serverRoomId + "\r\n"
                                        + "ANSWERTIME:\r\n"
                                        + "ENABLEVIDEO:NO\r\n";
                    //byte[] bytes = System.Text.Encoding.UTF8.GetBytes(msg2Client);
                    // byte[] bytes = addHead(msg2Client);
                    //ServerUpdateMessage(bytes, serverSock, 2);
                    string flagStr = "-1-2-1-2-1-2-1-2";
                    string total   = flagStr + msg2Client;
                    sendMsgToClient(total, serverSock, GlobalMessage.ALIYUNDATA);
                }
                else
                {
                }
                USER_INFO oldUser = new USER_INFO();
                oldUser.phone = number;

                USER_INFO newUser = new USER_INFO();

                newUser.localRoomId  = localRoomId;
                newUser.serverRoomId = serverRoomId;
                myGlobals.dbManager.UpdateUser(newUser, oldUser);
                myGlobals.mre1.Set();
            }
            else if (status == "FAILED")
            {
                //long l = myGlobals.ServerClient[sock];
                // string operatorName = myGlobals.operators[l];
                string msg2Client = "MEMBERCALLFAILED\r\n"
                                    + "CONFTYPE:0\r\n"
                                    + "OPERATORNAME:" + operatorName + "\r\n"
                                    + "ISOPERATOR:0\r\n"
                                    + "NUMBER:" + number + "\r\n"
                                    + "LOCALCONFROOMID:" + localRoomId + "\r\n"
                                    + "SERVERROOMID:" + serverRoomId + "\r\n"
                                    + "REASIONCODE:602\r\n";
                //byte[] bytes = System.Text.Encoding.UTF8.GetBytes(msg2Client);
                //byte[] bytes = addHead(msg2Client);
                string flagStr = "-1-2-1-2-1-2-1-2";
                string total   = flagStr + msg2Client;
                sendMsgToClient(total, serverSock, GlobalMessage.ALIYUNDATA);
                // ServerUpdateMessage(bytes, serverSock, 2);
            }
        }
示例#30
0
        string restartConfModel(string msg, Fleck.IWebSocketConnection clientSock)

        {
            return(msg);
        }