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; }
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); } }
// private long sock; public void analyse(byte[] buffer, Socket serverSock) { int totalLen = buffer.Length; int currentIndex = 0; // sock = keyOrValue; 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 = ConvertBytesToString(dataBuffer, dataBuffer.Length); string msg = System.Text.Encoding.UTF8.GetString(dataBuffer); MsgPair msgPair = dispatch(msg, serverSock); if (msgPair != null) { sendMsgToClient(msgPair.msg, serverSock, msgPair.type); } currentIndex += DataLength + 12; } }
public void analyse(byte[] buffer, Socket clientSock) { int totalLen = buffer.Length; int currentIndex = 0; while (currentIndex < totalLen) { if (verify(buffer) == false) { sendMsgToServer(null, clientSock, GlobalMessage.PACKETERROR); return; } 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); } } }
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); } }
MsgPair dispatch(string msg, Socket serverSock) { int separateIndex = msg.IndexOf("\r\n"); if (separateIndex != -1) { string msgHead = msg.Substring(0, separateIndex); int index = msgIndex[msgHead]; ServerMsgType msgType = (ServerMsgType)index; GlobalMessage globalMsg; //if (msgType.Equals(ServerMsgType.LOGINACK)) // globalMsg = GlobalMessage.LOGINACK; //else if (msgType.Equals(ServerMsgType.LOGOUTACK)) // globalMsg = GlobalMessage.LOGOUTACK; if (msgType.Equals(ServerMsgType.LOGINACK)) { string status = TextFollowing(msg, "STATUS:"); if (status.Equals("OK")) globalMsg = GlobalMessage.LOGINACKOK; else globalMsg = GlobalMessage.LOGINACKFAILED; } else if (msgType.Equals(ServerMsgType.LOGOUTACK)) { string status = TextFollowing(msg, "STATUS:"); if (status.Equals("OK")) globalMsg = GlobalMessage.LOGOUTACKOK; else globalMsg = GlobalMessage.LOGOUTACKFAILED; } else if (msgType.Equals(ServerMsgType.KEEPALIVE)) globalMsg = GlobalMessage.KEEPALIVE; else globalMsg = GlobalMessage.DATA; serverPublishMessage(msg, serverSock, globalMsg); string newMsg = ServerMsgDelegate[index](msg, serverSock); if (newMsg == null) return null; byte[] buffer = addHead(newMsg); MsgPair msgPair = new MsgPair(buffer, globalMsg); return msgPair; } else return null; }
MsgPair dispatch(string msg, Socket serverSock) { int separateIndex = msg.IndexOf("\r\n"); if (separateIndex != -1) { string msgHead = msg.Substring(0, separateIndex); int index = msgIndex[msgHead]; ServerMsgType msgType = (ServerMsgType)index; GlobalMessage globalMsg; //if (msgType.Equals(ServerMsgType.LOGINACK)) // globalMsg = GlobalMessage.LOGINACK; //else if (msgType.Equals(ServerMsgType.LOGOUTACK)) // globalMsg = GlobalMessage.LOGOUTACK; if (msgType.Equals(ServerMsgType.LOGINACK)) { string status = TextFollowing(msg, "STATUS:"); if (status.Equals("OK")) { globalMsg = GlobalMessage.LOGINACKOK; } else { globalMsg = GlobalMessage.LOGINACKFAILED; } } else if (msgType.Equals(ServerMsgType.LOGOUTACK)) { string status = TextFollowing(msg, "STATUS:"); if (status.Equals("OK")) { globalMsg = GlobalMessage.LOGOUTACKOK; } else { globalMsg = GlobalMessage.LOGOUTACKFAILED; } } else if (msgType.Equals(ServerMsgType.KEEPALIVE)) { globalMsg = GlobalMessage.KEEPALIVE; } else { globalMsg = GlobalMessage.DATA; } serverPublishMessage(msg, serverSock, globalMsg); string newMsg = ServerMsgDelegate[index](msg, serverSock); if (newMsg == null) { return(null); } // byte[] buffer = addHead(newMsg); // MsgPair msgPair = new MsgPair(buffer, globalMsg); string flagStr = "-1-2-1-2-1-2-1-2"; string total = flagStr + newMsg; MsgPair msgPair = new MsgPair(total, globalMsg); return(msgPair); } else { return(null); } }