Introduction
Silverlight run on client side (Win/Mac/MoonLight)
Just copy and paste on LAMP server.
Communication use HTTP protocol.
Interface view
General description
Make two php script :
write_msg.php
?php if (isset($_POST["user"]))
{
list($usec, $sec) = explode(" ", microtime());
$ts = $sec.substr($usec,2,4);
$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))
{
if ($fichier < ($ts - 150000))
{
unlink('msg/'.$fichier);
}
}
}
closedir($dossier);
}
?> read_msg.php
<?php
session_start();
$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)
{
readfile('msg/'.$val,'r');
$_SESSION['last_msg_ts'] = $val;
exit;
}
}
?>
Post Message with 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
Read Message with 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
Deploy
Just Copy and Paste on your server. Adjust CHMOD to 777
Online trying
Here