Bonjour,
Je réalise des tests sur une plateforme qui met à disposition une interface en REST et qui propose la notification de changements au travers d'une connexion COMET (qui est si j'ai bien compris une connexion HTTP persistante entre l'appli cliente et le serveur)
Comme je n'aime pas les choses trop faciles je "débute" VB.NET, je ne maîtrise pas bien les stream pas plus d'ailleurs que la programmation client serveur.
Voici en gros ce qui doit se passer:
- Envoi d'une requête POST de création d'un channel (à priori aucun rapport avec les httpchannel .NET)
Cette requête est envoyée avec le header
Code : Sélectionner tout - Visualiser dans une fenêtre à part Transfer-Encoding : chunked- le serveur répond, l'appli cliente traite cette réponse. Comme celle-ci est chunked il y a création d'un stream http
- Régulièrement l'appli cliente envoi des requête POST contenant un message HearthBeat
- Si une modification est effectuée sur le serveur, celui-ci envoi une requête POST avec des informations sur la modification
- L'appli cliente renvoi une réponse à la requête post pour confirmer la prise en compte de la modif
- Retour à l'étape 3
Bon pour l'étape 1 pas trop de soucis j'ai fait une fonction qui me renvoi la réponse de la requête comme suit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 Public Function Post_request(ByVal url As String, ByVal data As String, Optional ByVal cookies As String = "", Optional ByVal proxy As String = Nothing, Optional ByVal proxyport As Integer = Nothing, Optional ByVal timeout As Integer = 30000, Optional ByVal login As String = "", Optional ByVal pass As String = "", Optional ByVal chunked As Boolean = False) As String Dim reader As IO.StreamReader Dim writer As IO.StreamWriter Dim res As String = "" Dim hwebrequest As System.Net.HttpWebRequest _ = System.Net.HttpWebRequest.Create(url) ' on crée la requete web à partir de l'url res = Nothing If login <> "" Then Dim hcredential As New System.Net.NetworkCredential(login, pass) hwebrequest.Credentials = hcredential End If hwebrequest.Method = "POST" hwebrequest.ContentType = "application/xml" hwebrequest.ContentLength = data.Length hwebrequest.SendChunked() = chunked hwebrequest.KeepAlive = chunked hwebrequest.PreAuthenticate = True hwebrequest.UserAgent = "MonAppli" Debug.Print("réponse à la requete" & hwebrequest.HaveResponse) writer = New IO.StreamWriter(hwebrequest.GetRequestStream) writer.Write(data) writer.Close() Dim hwebresponse As System.Net.HttpWebResponse hwebresponse = hwebrequest.GetResponse() reader = New IO.StreamReader(hwebresponse.GetResponseStream) Debug.Print(hwebresponse.StatusCode) res = reader.ReadToEnd() reader.Close() Return res End Function
Par contre je ne vois pas comment "scruter" la connexion (détecter l'arrivée de notification depuis le serveur et y répondre) . J'imagine que je vais devoir faire l'équivalent d'un fork mais à part ça je suis complétement perdu.
Par exemple comment détecter l'arrivée d'une requête, à quel moment lire le streamreader etc...
Quelqu'un aurait il une piste à creuser pour réaliser ce genre de traitement?
En vous remerciant par avance de vos réponses
Partager