Anthony, I'm curious as to why you consider using a raw file any better than using the SQLite engine (which uses a single file as a datastore, yes, but provides a higher level and way easier access to the data).
The client has indeed a lot of responsibility, but isn't it the same (or perhaps even worse) if you use bare files on a network share? The client talks directly with the data base and in a web app, this would be a very bad decision. But given that this would be deployed in a LAN, as an Air app (which natively supports connecting to a SQLite database), I'd say it's probably not that bad, all in all. Cheers Juan Pablo Califano 2009/1/10, Anthony Pace <[email protected]>: > > This is just a bad way to do this. The client becomes responsible for > everything, and that leads to security issues like crazy. > > If this is for professional use, as you have stated multiple times, I would > say find a better way. > > Write delay based on file stamping, with all the clients agreeing to work > based on the same parameters, is the only way to make this work even > marginally well in a production environment. > > If file has an id and range of time associated to it that has not lapsed, > and my id is not the same, I cannot write. > > > Omar Fouad wrote: > >> Yes Pablo, that is an issue that I am being thinking about today. I want >> to >> enable user presence detection to the client. >> I've been thinking to let each client logged to the chat, send it's "id" >> to >> a table called ActiveUsers. When the user Closes the Application, the row >> is >> deleted. At the same time, the application intervally queries the table to >> see what users are online. This is a good Idea, but there is a problem. >> What >> if the connection is cut, or the application is closed by an "end task" >> command or by the system? How would I update the table and delete the user >> from it? >> >> >> >> On Sat, Jan 10, 2009 at 2:40 PM, Juan Pablo Califano < >> [email protected]> wrote: >> >> >> >>> I think you could do take the same approach as in an "http" chat system >>> (i.e., not a real chat solution but I've seen it used when data push from >>> the server was not available thru FMS, Red5 or other) >>> >>> You have at a minumun 2 tables: users and messages. >>> >>> When the user logs in, it's inserted into the users table and an id (such >>> as >>> an autoincremental) is returned for using in further requests. >>> >>> In the messages table you have these fields: >>> messageID >>> senderID >>> recipientID >>> delivered. >>> >>> Have each client polling the DD.BB <http://dd.bb/> <http://dd.bb/> at a >>> regular (and >>> reasonable interval) to get a list of available users (you can pass the >>> data >>> you need here, but the only realy necessary part is the userID). >>> >>> Each time a client polls the DD.BB <http://dd.bb/> <http://dd.bb/>. it >>> also asks for >>> pending >>> messages (which could be a text message or whatever you need; not sure if >>> SQLite supports BLOB fields, but if it does you could store serialized AS >>> objects, I guess). >>> >>> A pending message is just any message that has the user's userID and the >>> delivered flag set to 0. If there's any matching that criteria, return it >>> to >>> the user. >>> >>> When a client wants to send a message, it does an insert in the messages >>> tables, passing the recipient userID (which you can grab from the users >>> list >>> you already have), it's own ID and a message. >>> >>> You could also put a timestamp in each record (both in users and messages >>> tables) an every time a user logs in, delete any record whose timestamp >>> is >>> >>> >>>> = 24 hs old. >>>> >>>> >>> For many scenarios, this would a problematic approach (you don't have a >>> central server managing users interation, too much resposibility on the >>> client, etc), but under the circumstances, I think it should work fine. >>> >>> Cheers >>> Juan Pablo Califano >>> >>> >>> >>> >>> 2009/1/10, Anthony Pace <[email protected]>: - Ocultar texto >>> citado >>> - >>> >>> >>> >>>> If you have ever run into problems when writing a file on the network >>>> >>>> >>> when >>> >>> >>>> someone else is trying you will know what I mean, and now just imagine >>>> >>>> >>> that >>> >>> >>>> you have an app requesting a write multiple times per second... there >>>> is >>>> >>>> >>> no >>> >>> >>>> reliance. >>>> >>>> Nifty solution for the short term; yet, not something that can be used >>>> reliably. >>>> >>>> I might be wrong; yet, I doubt it. >>>> >>>> scenario 1... user1 opens the db file to put in their message; yet, >>>> user >>>> >>>> >>> 2 >>> >>> >>>> opened the file for writing just a milisecond before me, but it took >>>> your >>>> request for a write longer to reach the file server than mine did >>>> >>>> this would result in user1's message being overwritten >>>> >>>> >>> _______________________________________________ >>> Flashcoders mailing list >>> [email protected] >>> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders >>> >>> >>> >> >> >> >> >> > > _______________________________________________ > Flashcoders mailing list > [email protected] > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > _______________________________________________ Flashcoders mailing list [email protected] http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

