Du kan ikke pushe fra en server til en klient over HTTP da denne protokol jo i sin natur er stateless. I princippet er det nok muligt at logge indgående klienters IP adresser og efterfølgende udforme klienten så den "lytter" efter pakker fra serveren der så broadcaster til alle loggede IP adresser. Dette giver dog en lang række problemer, bla. vil det være meget svært for serveren at vide hvornår den skal holde op med at broadcaste til en bestemt klient! Den smarteste løsning vil nok være at lade klienten spørge serveren med et vist interval om der er kommet nye beskeder!
måske kan man måske kan man ikke det er bare et spm om hvor hardcore du er.. hvis du ikke er så hardcore kan du jo altid tid skrive en mail til Karim Pedersen som ved næsten alt om ASP. kap@n-com.dk og ja det er ham som der også stå for det der internet blad som hele tiden kommer på gaden.. :) Det er da for nice et blad.. COM
Mvh Michael T
Håber du kan bruge min hjælp.. hvis jeg staver for kert er det fordi at jeg er ordblind og er pisse fuld lige nu men har lyst til at lave opagaver til folk som dig.
cms>> C# runtime delen fylder lige under 20MB. tl>> Hvis du vil skrive en C# klient skal du netop ikke anvende activeX, men kan holde dig indenfor .Net modellen og skal derfor heller ikke anvende c++, men kan anvende VB.Net, C# eller hvad du nu foretrækker. Autorefresh kan laves på mange måder, personligt ville jeg anvende javascrits setInterval metode og alt efter publikum enten foretage kommunikationen med serveren vha. xml (kræver at alle bruger IE hvis det skal laves nemt) eller evt. køre kommunikationen i en skjult iframe vha. form posts. På denne måde undgår du at selve chat siden skal gentegnes hver gang klienten skal spørge serveren!
Husk blot at hvis du skriver en ActiveX-kontrol skal den signeres digitalt hvilket koster flere 1000 kr. når man skal godkendes af en CA. Til sammenligning kan siges, at ActiveX-kontroller er sproguafhængige men platformafhængige - Java applets er sprogafhængige men platformsuafhængige :)
cms>> Han skal jo netop IKKE skrive en activeX komponent, men et c# assembly, sålænge det ikke behøver rettigheder på det lokale system, behøves det heller ikke at blive signeret!
tl>> Du kan godt skrive en ActiveX komponent i C#, men så kræver den alligevel at klienten har installeret .Net frameworket og hvis de har det er der ingen grund til at anvende ActiveX teknologien, så kan du lige så godt skrive et "rigtigt" C# assembly!
ok. det er jo klart.. Det jeg vil lave skal kunne køre i en webbrowser, og skal kunne køre ved at gå ind på en URL.. Spørgsmålet er hvorledes man laver et sådant activeX program nemmest.. Kan man gøre det som et c# assembly eller er dette et normalt exe program.?
Et c# assymbly er overkill hvis du spørger mig, da brugeren skal hente ulideligt mange MB før det virker. Om det er 20 eller 50 er vist ligemeget :) En 'rigtig' ActiveX har det problem at den skal signeres. En java applet - hey! intet problam :) Og så er der igen muligheden med at kombinere JavaScript og nogle skjulte frames m.v.
cms>> Hvorvidt man skal vælge .Net eller Java er vist mere en religionskrig end et spørgsmål om teknik.m Begge platforme har sine fordele. Såfrremt man skal kode til Windows alene, må .Net forventes at være det der giver de bedste resultater, alene baseret på det faktum at platform såvel som styresystem stammer fra samme leverandør!
hvor Assembly.dll er stien til dit assembly. Har du f.eks. placret mycontrol.dll i http://www.minserver.dk/net/controls, skal <object> taggen se således ud:
Z42: Overvej følgende: En TCP-connection som er instantieret fra klient til server kan jo godt ligge i dvale og vente indtil der kommer data fra serveren. Dette vil være en slags indirekte push fra serveren, for selvom clienten er den som i første omgang opretter forbindelsen, så vil clienten ikke skulle requeste serveren hver 10. sekund. Istedet vil den blocke, i en bagvedliggende tråd, indtil serveren kommer med response, hvilket den jo sagtens kan gøre flere gange. Altså har du en løsning, hvor din klient sagtens kan være bagved firewall og andet godt, hvor serveren ikke behøver at kende klientens ip, og hvor trafikken kun forefindes når den er nødvendig
cms>> Det kan selvfølgelig sagtens lade sig gøre med en binær klient på klienten og af samme årsag har vi jo allerede luftet .Net, Java og ActiveX. Dit scenarie er jo overhovedet ikke et server push, men derimod et multi threaded client pull, hvilket altså ikke gør det til et indirekte push. Problemet med dit setup er, at så snart klienten har modtaget data fra serveren bliver den straks nød til at lave en ny forespørgsel så serveren har en åben tcp forbindelse at svare på. Med i din request skal du så sende state information så serveren kan se hvad du ved og hvad du ikke ved og ud fra dette bestemme hvornår du skal have den næste opdatering. Dette virker fint på klienten om end det er en anelse omstændigt. Men se det nu fra serverens side. Med f.eks. 2000 aktive klienter vil der konstant være 2000 åbne tcp forbindelser på serveren, det er altså ikke ret performance forbedrende!
Humm humm.. nej det har du komplet ret i. Så den bedste løsning må vel være at klienterne er tilgængelige (altså ikke bag firewalls osv.) for serveren, så den åbner connection'erne til klienterne når der rent faktisk *er* data. Eller?
Nej, korrekt. Så er der lige proxyservere.. men i det store hele. Ellers kan den modsatte løsning med 20 sekunders intervallers pull jo benyttes som 'backup'
tl>> ???? Vil du ikke snart svare på nogle af dine MANGE åbne spørgsmål?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.