Javascript - Web Based Chat, Using Ajax Timers , Will It Perform For Large Number Of Users
Jan 25, 2010
as all we know that we can create very simple chat using ajax timer & web service , it runs well for few users .
i want to leaverage same idea for site where 5000+ users will be there in chat room , messages are stored in queue hold in memory * dispatched as user request that is through java script timers calling page method or service ,
how well it will perform ? i know GTalk implements XMPP protocol(jabber) for the web chat
seems it will be difficult to got XMPP way ?
I'm developing chat application on asp.net mvc, in my app, user can create room and invite other join to chat, but don't need to save chat room information.So, I designed to save all chat message ,room information and user info in Session and clear it when owner close the room.I'm worry about stressing server when I save alot of data (include room info, user info, and message) in Session if there are up to 5000 rooms created and alot of messages transfered in that room.Is my solution good enough ? is it ok to save in Session ?
I am working on a website in which more than a thousand users can login at a time and there may be more than 50000 total users. I am worried about the performance of the application in case of concurrent access.
what is the best way to manage that, so that my application runs without any performance issues.
I have one application and there are 1500 users of that application.When 200 users logged in application that time login page and other pages of applications are not opend. I want to manage 1000 of users at a time.
Pinging back to a webservice in ajax from the client keeps the user's session alive, I don't want this to happen. More extensive summary For a website we're developing, we need the client to ping back (in js) to a webservice (ASMX) on the server (IIS7.5). This happens to let the server know that the user is still on the site, and hasn't browsed away to another site. This is as our customer wants to let users lock records, but if they browse away to other sites, then let other people take over those locked records. Perhaps the distinction between the client being on the site but inactive and on another site seems unimportant, but that's kinda irrelevant, I don't get to write the UI spec, I just have to make it work.
My problem is this, the ping stops the user from being timed out on the server through the standard forms authentication timeout mechanism. Not surprising as there is that 30 second ping in the background keeping the session alive. Even though we want to know if the user is still on the site, we want the normal forms authentication timeout mechanism to be honoured. I thought I might be able to fix this by removing the ASP.NET_SessionId and .ASPXAUTH cookies in the XMLHttpRequest that is the server ping, but I can't figure out how to do this. This is how my web service & method are defined:
[WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ScriptService] public class PingWS : WebService { [WebMethod] public void SessionActive(string sessionID) { // does stuff here } This is how I'm calling it in js (request is over HTTPS, : $.ajax({ type: "POST", url: "PingWS.asmx/SessionActive", data: 'sessionID=' + aspSessionID + '}', beforeSend: function (xhr) { xhr.setRequestHeader('Cookie', ''); xhr.setRequestHeader('Cookie', 'ASP.NET_SessionId=aaa; .ASPXAUTH=bbb;'); }, dataType: "json" });
I was trying with the setRequestHeader, but that just appends to the header rather than overwrites the header, and IIS is happy to ignore that junk I added. I'm thinking maybe I should be trying to do this at the server end, someone take PingWS.asmx out of the loop so that it doesn't keep the session active, but I'm not sure how to do this. Although the title of the question is focused on clearing the cookie in the header, I'd be super happy if anyone points out that I'm being really stupid and there is actually a much better way of trying to do what I'm doing.
I'm thinking at this stage maybe I need to add something to the webmethod that says how long this particular page has been inactive, and use that knowledge to timeout manually. That actually sounds pretty easy, so I think I'll do that for now. I'm still convinced that there must be an easy way to do what I originally wanted to do though. Update I'm thinking I'm pretty screwed in terms of cookie manipulation here as both the .ASPXAUTH and ASP.NETSessionId cookie are HttpOnly, which means the browser takes them out of your hands, you can't access them via the document.cookies object. So I would say that leaves me with:
Updating my SessionAlive webmethod to track each request so I can tell how long the user has been sitting idle on a page and timeout if needs be Marking the .asmx page somehow on the server end so that it's taken out of the normal authentication/session tracking flow I know how to do 1. so I'll start there but 2. seems much cleaner to me.
i want datalist to show only 6-8items ,as these datalist is connected to datasource which has more than 20 items..
like in facebook,we have lots of friends but in friend box only 6 friends is shown and when we click that we go to next page which display all list of friends...
How can I get all the current users online in MVC 2 (like chat)?
Remember that MVC 2 (or v1.0) template was built-up with membership view/controller/model. That is possible using that model, I can get the online users?
I want to implement web based chat as google , yahoo , msn , facebook implemented , can any one give idea about which path i have to start i have three ways to do the task which one i should go for is the confusion
1 . Web to Web using Asp.net Database driven approach (AJAX , jquery enabled)
I have a web site and i want any online users chat with any other user in private mode. it is like facebook chat. is there any free third-party component to use in asp.net web site.
My environment is ASP.Net + IIS 7.0 + Windows Server 2008 + .Net 3.5. I am wondering whether the number of users online and number of active session are the same thing? The other question is, no matter whether they are the same, how to calculate them (i.e. for a given time, what is the number of users online, and related active number of sessions)?
We have implemented the ASP membership and roles..and we would like to display the users currently logged in and also display the number of users online so we can display that on the page. The list of users woudl only be available to our admins. BUt the number of users will show for everyone.
I'm serving up PDFs from a SQL db and presenting them in the browser. I'm trying to figure out a way to embed a number in the PDF dynamically so that the recordID for that PDFs SQL record is available to me when the user submits the XML form data. The user hits the submit button on the form and the form submits its XML data to my submission page. If there is some way of changing the submission URL on the fly then I could do a query string to pass my self the recordID. I'm not generating the PDF in code, its being created by hand and then uploaded to my site.EditUser is given a link someServer.com/pdfLink.aspx?formID=5 they go there and that pages pulls a PDF from the DB and displays it. This pulls up acrobat in browser full size so my aspx page isn't in control of submitting the completed form, Acrobat is. The user fills out the form and hits the submit button in the form. This submit button was set up at form design time to point to another page someSite.com/pdfSubmit.aspx The submit button posts the XML data to that page and I can process it. I need the recordID in the query string for the someSite.com/pdfSubmit.aspx page. To do this I would need to modify the PDF to either add the recordID and query string to the submit button's submit URL, or embed it in the PDF else ware. The big question is how do I modify the PDF just before I display it via someServer.com/pdfLink.aspx?formID=5 to do either of these two options.
(1) "...this application is a very heavy SQL application, it does not perform a session based SQL connection, instead for every request it refers back to the base confirmation file on the web server and then opening or making a new SQL request the result being a very chatty SQL client!"(2)..." concerns specifically relating to the chattiness of the SQL client app. Please be cautious when "testing" the product for it may have a negative effect even on [the] faster WAN links"C. Example of Code(1) from a class helper file:
I'm running a ASP.NET website on my development box (.NET 2.0 on Vista/IIS7).
The Session_Start method in global.asax.cs logs every call to a file (log4net).
The Session_End method also logs every call.
I'm using InProc session state, and set the session timeout to 5 mins (to avoid waiting for 20 mins).
I hit the website, wait for 5 minutes unit I see the Session_End logging. Then I F5 the website. The browsers still has the session cookie and sends it to the server. Session_Start is called and a new session is created using the same session id (btw: I need this to be the same session id, because it is used to store data in database).
Result:
Every time I hit F5 on a previously ended session, the Session_Start method is called.
When I open a different browser, the Session_Start method is called just once. Then after 5 minutes the Session_End each F5 causes the Session_Start method to execute.
Update:
After the Session timeout, all subsequent requests have a session start & session end. So in the end my question is: why are the sessions on these subsequent request closed immediatly?
I want to insert a large amount( approx 7000 records) of data into a table, My scenarios is that i need to check whether the record already exists then it will not insert it. Currently i am using a stored procedure for this which gets called for each record.
IF EXISTS(SELECT 'True' FROM MYTABLE WHERE ID = @ID) BEGIN
--This means it exists, return it to ASP and tell us
SELECT 'This record already exists!' END ELSE BEGIN
--This means the record isn't in there already, let's go ahead and add it
SELECT 'Record Added' IF EXISTS(SELECT 'True' FROM [Aadil].[dbo].[SharePointSitesData] WHERE ID <> @ID)
Working on a heavy ajax based site with over 100 methods from all the ajax calls inside each of each controller all with basically the same code.Was thinking of changing them to a big case statement for readability which would keep the code a bit more dry and make it easier to read.What I am wondering is: Will there be a performance hit and is there a better way to deal with it?
I have 65 columns in the grid, if the columns are reduced to 20 then the speed when accessing from client is more or less similar to that accessing from web browser. Does it mean that all this performance issue is due to the data only ???