IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

"Push" http au travers d'une connexion persistante


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut "Push" http au travers d'une connexion persistante
    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:

    1. 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
    2. 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
    3. Régulièrement l'appli cliente envoi des requête POST contenant un message HearthBeat

    4. Si une modification est effectuée sur le serveur, celui-ci envoi une requête POST avec des informations sur la modification
    5. L'appli cliente renvoi une réponse à la requête post pour confirmer la prise en compte de la modif
    6. 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

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Toujours bloqué de mon coté personne n'a même un début de piste à creuser?

    Merci de votre aide,

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo