void socketServer_NewMessageReceived(WebSocketSession session, string msg) { ////string name = session.Cookies["name"] == null ? "" : session.Cookies["name"].ToString(); //string name = Guid.NewGuid().ToString(); //SendToAll(name + ": " + msg); //Debug.WriteLine() switch (msg) { case "FILE_DELETE": fileDelete(); session.Send("FILE_DELETE_SUCCESS"); break; case "SENDING_COMPLETE": bool ok = saveFile(session.SessionID); if (ok) { session.Send("UPLOAD_SUCCESS"); } else { session.Send("UPLOAD_FAIL"); } session.Close(); break; default: // Begin receive buffer of the files if (msg[0] == '{' && msg[msg.Length - 1] == '}') { try { oFile fi = JsonConvert.DeserializeObject <oFile>(msg); if (files.ContainsKey(session.SessionID)) { files[session.SessionID] = fi; } else { files.TryAdd(session.SessionID, fi); } var stream = new MemoryStream(); streams.TryAdd(session.SessionID, stream); session.Send("SOCKET_BUFFERING_START"); } catch { } } break; } }
private bool saveFile(string SessionID) { try { if (files.ContainsKey(SessionID) && streams.ContainsKey(SessionID)) { if (!Directory.Exists(rootPath)) { Directory.CreateDirectory(rootPath); } oFile fi = files[SessionID]; MemoryStream stream = streams[SessionID]; string pathFile = Path.Combine(rootPath, fi.name); if (File.Exists(pathFile)) { pathFile = Path.Combine(rootPath, DateTime.Now.ToString("yyyyMMdd-HHmmssfff-") + fi.name); } using (var ms = new FileStream(pathFile, FileMode.OpenOrCreate)) { stream.Seek(0, SeekOrigin.Begin); stream.CopyTo(ms); } stream.Close(); streams.TryRemove(SessionID, out stream); return(true); } } catch (Exception ex) { string msg = ex.Message; } return(false); }