AJAX :: Comet - Detect If The Client Disconnected During Those 10 Minutes?
Jan 29, 2010
I implemented a chat using the COMET "way" described in this article: http://www.codeproject.com/KB/aspnet/CometAsync.aspx
In this example, the client connects for 5 seconds every time. I wanted to hold the client longer, for about 10 minutes.
My problem is - how to detect if the client disconnected during those 10 minutes? I tried using Response.IsClientConnected but it returns true even if I close the client. There must by some inidicator since the socket gets disconnected if I close the client.
I have a web form which does a full page postback when a button is clicked. This is caused by an update panel trigger. Client-Side: When the button is clicked, an animation gif is displayed Server-Side: When the button is clicked, the server side event changes the content type to excel, binary writes out excel content (byte array) and does Response.Flush() and Response.End() Client-Side: User is asked to either open or download the excel file. Animation gif is still displayed.
Question: How can I detect client side (using jQuery or Ajax) that the response has been completed. There is no page postback because the code-behind has cut off the response by using Response.End().
I'm trying to prevent a "flicker" effect that is occurring on my ASP.NET page which occurs when a user navigates to the page via the browser back button after having navigated away from it. The reason for the flicker is that I'm using an Update Panel which has some content in there on the initial page-load. As a result, when the page is loaded via a back button that initial content is shown very briefly before it is updated with the correct History-aware data.
In order to overcome this I am intending on having the updatepanel hidden (display: none) on inital page load and then show it as long as we don't have any history to deal with. The problem is that I can't find out what to check to determine if there's any history. I can see that the Sys.Application has a _history member but when I'm checking it on page init it is null each time.Does anyone know what I should be checking to determine if there's history to deal with for a page load client-side? And at what point to do it?
I need to filter the "Client Disconnected" error below in my global.asax file. Does anyone know what kind of exception it is so that if it matches i can do extra processing? ---------------------------------------------
Thinks at a backgammon online multiplayer game with over 100, or even 1000 online users. The game communication is done using Ajax + 3 seconds Comet connection interval + ASP.NET technology. Is this a real scenario ?
Didn't so many Comet open connections block the server resulting in big latency ?
have here a (internal intranet) site where users can preserve places for the lunch and pause... :)Now, meanwhile the users count grows more and more and the ajax site that speeks with a webservice for the calculations und checks geting slower and slower... user 900+The site checks every 5 seconds for the actual state and uses groups for the users.Ok, now i have researched on the web, and found the comet/reverse ajax aproach that the service can push the clients with events.But i have not found any good asp.net tutorial with visual studio (2010) how i can use the asp.net standard controls and vs design mode.Is there a framework for that stuff?
I'm trying to implement an auction website and I search in web the Ajax Push is the best way where I can use! So, I'm finding some samples in web to learn how to implement Ajax Push (comet) in client and server. By the way, I find some samples in ASP.Net Webforms, but no in MVC version. I'd like to find a demo, sample, anything ... that use MVC
I am trying to detect wether or not a client has version 4 of the .net framework installed. Using theRequest.Browser.GetClrVersions() method, I only get versions listed up to 3.5 SP1, but I do not get anything back indicating version 4. Does anyone know how I can determine this?
We have a Citrix .ica file icon that will be placed on a web page. Is there a way to detect if a pc has the Citrix client installed?
Our end goal is to display a message at the bottom of the page with a link to install the Citrix client from our network share. But we only want to the message to display if the client pc doesn't have the Citrix client installed.
i want to show info like how much time will be requited to download file in client machine. every client will have different internet speed so how can i detect and show time required to download file in client machine. is it possible in asp.net.
I want to redirect the user after 2 mins if there is inactivity for 2 mins. I am not using ASP.NEt membership. And I dont want to use Sessiontimeout for this. Session timeout will logout the user even if he is working on the system. My objective is like screensaver process.
If there is no action for the specified time, the screensaver runs. Similarly, I want to redirect the user to login page.
note that i have already handled it with the following javascript:
[Code]....
Here what my problem is,
the user is working on the site...ok.. he want to see someother site.he browse someother site and works on....or even he can do some other work in his system...but he is active in his system... What this script does is, it automatically logout the user and redirect him to login page. But it should not do while he is active...IT SHOULD REDIRECT IF HE IS NOT ACTIVE REALLY (Similar to Screensaver process)
I have a need to show sensative information but I would only like it available on screen for 2 minutes, and then after it dissapears.
Since this is part of my web application, I would like the user to stay logged into the web site before and after viewing the information, but in order to view it, I would like them to re-enter their username/password.
Are there any directions I can be pointed into accomplish this task?
I have a very peculiar problem that I've been wrapping my head around and I just can't figure it out. I have an updatepanel. Inside that I have a TabContainer. And inside that I have three TabPanels, each of which has checkboxes. Sometimes (and it happens often enough that I can easily reproduce it, but strangely may not happen with the same exact steps), when I click on different tabs or click on checkboxes inside the tabpanels (basically when I do an AJAX async postback), the request takes about a few minutes, after which the request just stops. Looking at the Firefox error console, I see this popping up after a few minutes...
Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 0 Now, the asyncpostbacktimeout property for the ToolkitScriptManager is set at 360000, which is 6000 minutes, so the problem has nothing to do with that setting. In IE, I never have this problem and the AJAX requests are instantaneous and smooth, no delays. So this isn't a network or database lag issue. Something to do with how AJAX is run in Firefox. Why is it that sometimes, an AJAX request in Firefox takes a few minutes and just stops processing the request? And once again, the steps to reproduce this problem may not be the same every time, it seems random - very strange. Google searches have yielded very little help on this. I've tried things like extending the timeout property (which again has nothing to do with this), setting Response.Cache.SetNoStore() everywhere. Is there a crude workaround I can do (at this point, I'm willing to settle for a workaround). I just don't know anymore.
disconnected mode and transaction.it's give to me ERROR message
Quote.ExecuteReader requires the command to have a transaction when the connection assigned to the command is in a pending local transaction. The Transaction property of the command has not been initialized PHP Code: da.InsertCommand = cb.GetInsertCommand
my code is:
PHP Code: Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("DBCon").ConnectionString) Dim cmd As New SqlCommand("insert into Customer (customer_id, customer_name, note) values (@cid, @cname, @note)", con) Dim da As New SqlDataAdapter("select * from CustomerPhone", con)
In order to have two-way communication from the server to the client, the client activates a ServerObject, then passes in its own ClientObject (which is also a MarshalByRefObject) the server uses the ClientObject to talk back to the client:
var lsClient = new ClientObject(); var lsServer = (ServerObject)Activator.GetObject(typeof(ServerObject), url); lsServer.attach(lsClient);
When the attach method is called, the server takes the ClientObject and stores it in a List:
public void attach(ClientObject client) { clientList.Add(client); }
The server can then call a method on the ClientObject called "SendMessage" to communicate to each client in its list:
foreach(var c in clientList) { c.SendMessage("Hello"); }
This works great until a client is encountered that has disconnected. In this case, an error is thrown about the client refusing the connection. I can catch the error, but the problem is I cannot remove the reference to the ClientObject from the server's List. The following re-throws the "connection refused" exception anytime a client has been disconnected:
clientList.Remove(badClient);
So a couple of questions:
1- Is there a way to detect the connection state of a client without having to catch an error?
2- When I do detect a client that has disconnected, why does the attempt to remove the object from the server's list appear to "communicate" with the client (thus causing the exception to be thrown again?)
EDIT
As Patrick pointed out below, doing a Remove from a list causes the List to iterate my objects and do a comparison on them (calling .Equals) - this is what caused my ClientObject to attempt to communicate again and thus throw the exception. To resolve it, I instead changed the List to a dictionary keyed off a unique ID supplied by my Client at the time of attaching to the server. Then I used that unique ID to remove the client. I never did find a direct way for determining if a client had disconnected other than catching the error.
The DataSet is a disconnected data object. Once the DataSet has been filled, the connection can be closed and the DataSet's contents can still be examined and manipulated.What does manipulated mean ? If possible, then please give me example(s) for manipulated.
Do all comet style applications require a loop somewhere in the application on the serverside to detect updates/changes? how the logic behind a loopless comet style application would work?
I have designed program to display live events/content(like online orders in shop) at different location. Now case is, suppose Some of Clients putting order for material and suddenly Internet gets disconnect.So what I am looking for, in this case, I want to show some default text/images to End user who is trying to put orders. I am ready to design to Desktop Application to do this, but I need inputs on how to achieve this at User end?
I'm making an application with server sided variables that change every second. Every second those new variable need to be shown at all the clients that have the webpage open. Now most people told me to go with comet because I need to push/pull the data every second, now I've got a few questions: What would be a better solution looking at the fact that I need the new data EVERY SECOND, pulling from the client or pushing with the server?
Also the item ID's that are on the server side (with the variable's that ID got) can change and when the client refreshes the page he needs to get the oldest (and living) ID's. This would mean that my jquery/javascript on the client side must know which ID's he got on the page, what is best way to do this? Last thing is that I can't find a good (not to expensive) comet library/api for asp.net (C#). Anyone ever used a comet library with good results? We're looking at a site that should be able to have 2000 comet connections at every moment.
I am looking for a free implementation for Comet or Push. Here is an example of chat done by comet:http://www.phpchatsoftware.com/phpbb/I have my own server.Is there any thing like this?P.S. I am using asp.NET, on server and jQuery on client.Is there anything new? or maybe this is the last technological free open source achievement:http://www.codeproject.com/KB/aspnet/CometAsync.aspx ?
I have a question, much liket this unanswered one. I'm trying to work with the entity framework, and having a tough time getting my foreign tables to update. I have something basically like this in the DB:
Incident (table):
-ID -other fields
Responses (table):
-FK:Incident.ID -other fields
And and entities that match:
Incident (entity) -ID -Other fields -Responses (EntityCollection of Responses via navigation property)
Each Incident can have 0 or more responses.
In my Webpage, I have a form to allow the user to enter all the details of an Incident, including a list of responses. I can add everything to the database when a new Incident is created, however I'm having difficulty with editing the Incident.
When the page loads for edit, I populate the form and then store the responses in the viewstate. When the user changes the list of responses (adds one, deletes one or edits one). I store this back into the viewstate. Then when the user clicks the save button, I'd like to save the changes to the Incident and the Responses back to the DB. I cannot figure out how to get the responses from the detached viewstate into the Incident object so that they can be updated together.
Currently when the user clicks save, I'm getting the Incident to edit from the db, making changes to the Incident's fields and then saving it back to the DB. However I can't figure out how to have the detached list of responses from the viewstate attach to the Incident. I have tried the following without success:
Clearning the Incident.Responses collection and adding the ones from the viewstate back in:
Incident.Responses.Clear() for each objResponse in Viewstate("Responses") Incident.Responses.add(objResponse) next Creating an EntityCollection from my list and then assiging that to the Incident.Responses Incident.Responses = EntityCollectionFromViewstateList Iterating through the responses in Incident.Response and assigning the corresponding object from viewstate: for each ObjResponse in Incident.Responses objResponse = objCorrespondingModifedResonseFromViewState Next
These all fail, I'd like to be able to merge the changes into the Inicdent object so that when the BLL calls SaveChanges on the changes to both the Incident and Responses will happen at the same time.