Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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);
        }