MiniChat en Silverlight et Php

Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016 - 30 juin 2010 à 11:11
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016 - 30 juin 2010 à 12:20
Introduction

Silverlight tourne coté client(Win/Mac/MoonLight)
Il suffit de copier les fichiers sur l'hébergement LAMP
Communication use HTTP protocol.

Une vue de l'interface



Description Générale

Recopiez ces deux scripts php :

write_msg.php

<?php
if (isset($_POST["user"]))
{
    list($usec, $sec) =  explode(" ", microtime());
    $ts = $sec.substr($usec,2,4);
    // On crée le fichier message dans le dossier msg
    $fichier = fopen('msg/'.$ts, 'w+');
    fwrite($fichier, stripslashes($_POST['data']));
    fclose($fichier);
    echo "0";
    $dossier = opendir('msg');
    while ($fichier = readdir($dossier))
    {
        if (!preg_match("#^[.]{1,2}[a-z0-9 -.]*#i",$fichier))
        {
            // On en profite pour purger les msg plus vieux que 15 secondes
            if ($fichier < ($ts - 150000))
            {
                unlink('msg/'.$fichier);
            }
        }
    }
    closedir($dossier);
}
?>


read_msg.php

<?php
session_start();
// ouvrir le dosssier msg
$dossier = opendir('msg');
 
while ($fichier = readdir($dossier))
{
    if (!preg_match("#^[.]{1,2}[a-z0-9 -.]*#i",$fichier))     
    { 
        $files_array[] = $fichier;       
    }
}
closedir($dossier);
 
sort($files_array);
 
foreach ($files_array as $key => $val)
{
   if ($_SESSION['last_msg_ts'] < $val)
   {
        // Lit le message non lu
        readfile('msg/'.$val,'r');
        // Indique le dernier message lu
        $_SESSION['last_msg_ts'] = $val;
        exit;        
   } 
}
?>


Poster un message avec WebClient

Private Sub SendMsg(ByVal Data As String)
    ReadMsgTmr.Stop() 

    Try
        Dim Client As New WebClient()
        Client.Headers("Content-Type")  = "application/x-www-form-urlencoded"
        AddHandler Client.UploadStringCompleted, AddressOf SendMsgCompleted
        Client.UploadStringAsync(New Uri(String.Format("{0}/write_msg.php", BASEPATH)), "Post",
"user= " & UsrTbx.Text & "&data=" & Data) 

    Catch ex As Exception 

    End Try 

End Sub 

Private Sub SendMsgCompleted(ByVal sender As Object, _
                             ByVal e As UploadStringCompletedEventArgs) 

    Try
        Dim Msg As String = e.Result
        Select Case Msg
            Case Nothing
                ReadMsgTmr.Interval = System.TimeSpan.FromMilliseconds(1)
                ReadMsgTmr.Start()
                Exit Sub
            Case "0"
                ReadMsgTmr.Interval = System.TimeSpan.FromMilliseconds(1)
                ReadMsgTmr.Start()
        End Select
    Catch ex As Exception 

    End Try 

End Sub 


Lire un message avec WebClient

Private Sub ReadMsgTmr_Tick(ByVal sender As Object, _
                             ByVal e As System.EventArgs) Handles ReadMsgTmr.Tick 

    ReadMsgTmr.Stop() 

    Try 

        Dim Client  = New WebClient
        AddHandler Client.DownloadStringCompleted, AddressOf ReadMsgComplete
        Client.DownloadStringAsync(New Uri(Config.BASEPATH & "/read_msg.php", UriKind.Absolute), 0) 

        Client =  Nothing 

    Catch ex As Exception
        'HtmlPage.Window.Alert(ex.Message)
    End Try 

End Sub 

Private Sub ReadMsgComplete(ByVal sender As Object, _
                            ByVal e As DownloadStringCompletedEventArgs)
    Try
        ' Si il y a un message
        Dim Msg As String = e.Result
        If Msg <> "" Then
            DisplayTextinChatBox(Msg)
            ' raffale
            ReadMsgTmr.Interval = System.TimeSpan.FromMilliseconds(150)
        Else
            ' idle
            ReadMsgTmr.Interval = System.TimeSpan.FromMilliseconds(1500)
        End If 

    Catch ex As Exception 

    End Try
    ReadMsgTmr.Start() 

End Sub



Deployement

Copié/collé les fichiers sur votre hébergement. Réglez CHMOD à 777


Tester en ligne
=en&pg=12 Ici

Téléchargement

Source Code


www.furukoo.fr

3 réponses

Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
30 juin 2010 à 11:25
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
30 juin 2010 à 12:18
Afyn, il y a un emplacement spécifique ici pour cela, tu peux déposer tout ca dans la partie tutoriaux du site. Le forum est réservé pour les questions et l'aide en générale.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
30 juin 2010 à 12:20
Désolé, j'ai pas réussi dans la partie tutorial.
Si un admin peut rétablir ^^

www.furukoo.fr
0
Rejoignez-nous