exemple
Code : Tout sélectionner
InitNetwork()
ConnectionID = OpenNetworkConnection("localhost", 256)
SendNetworkString(ConnectionID, "hello socket")
CloseNetworkConnection(ConnectionID)
Code : Tout sélectionner
InitNetwork()
ConnectionID = OpenNetworkConnection("localhost", 256)
SendNetworkString(ConnectionID, "hello socket")
CloseNetworkConnection(ConnectionID)
Code : Tout sélectionner
; tchat en php et purebasic par Yrahen 2014
; modifié par blendman en novembre 2021, pour être compatible avec pb 5.73
Enumeration
#Fenetre
#Police
#Editeur
#Message
#Pseudo
EndEnumeration
If InitNetwork() =0
MessageRequester("Erreur","Impossible d'initialiser le réseau")
End
EndIf
DelayRefresh=2 ; frequence d'actualisation du tchat en secondes
; Modifier votre URL de votre site ici :
Global URL$ = "http://VOTRE_URL/tchat.php"
; Pour quitter proprement en fermant le thread
Global QuitRefresh = 0
; Le tableau pour libérer ensuite mes thread (quand on ferme le programme
Global Thread
; ajout d'une petite sécurité si besoin : ceci n'est pas utilisé mais vous pouvez l'utiliser lors de l'envoi des requetes
NewMap Header.s()
Header("User-Agent") = "Application/5.0.0.1"
;{ procedures
Procedure Refresh(Delay)
; procédure par yrahen, qui permet de rafraichir la liste des messages du tchat.
; j'ai modifié en passant par les requete HTTP (HTTPRequest(#PB_HTTP_Get...)
Repeat
; je dois bloquer le mutex, car sinon, certaines requete ne passent pas lors de l'envoi.
u$ =url$ +"?Action=Refresh"
HTTPRequest= HTTPRequest(#PB_HTTP_Get, u$,"")
If HTTPRequest >0
Try$ = HTTPInfo(HTTPRequest, #PB_HTTP_Response)
; Debug "Status: " + HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode)
; Debug "Réponse: " + HTTPInfo(HTTPRequest, #PB_HTTP_Response)
Affichage$ = ReplaceString(Try$,"<br/>",Chr(10))
affichage$ = ReplaceString(affichage$,"\'","'")
SetGadgetText(#Editeur,Affichage$)
FinishHTTP(HTTPRequest)
EndIf
Delay(delay*1000)
Until QuitRefresh = 1
EndProcedure
; Puis on lance le programme
If OpenWindow(#Fenetre, 0, 0, 600, 560,"Tchat", #PB_Window_SystemMenu)
Thread = CreateThread(@Refresh(), DelayRefresh)
LoadFont(#Police, "Tahoma", 14)
SetGadgetFont(#PB_Default, FontID(#Police))
EditorGadget(#Editeur, 10, 10, 580, 490,#PB_Editor_ReadOnly|#PB_Editor_WordWrap)
StringGadget(#Message, 190, 510, 400, 40, "")
StringGadget(#Pseudo, 10, 510, 170, 40, "")
AddKeyboardShortcut(#Fenetre, #PB_Shortcut_Return, 15)
Repeat
Event = WaitWindowEvent(1)
If Event = #PB_Event_CloseWindow
quit =1
QuitRefresh = 1
ElseIf Event=#PB_Event_Menu And EventMenu()=15
Message$ = GetGadgetText(#Message)
Pseudo$ = GetGadgetText(#Pseudo)
urlOk$ = URLEncoder(url$+"?Action=Post&Pseudo="+Pseudo$+"&Message="+Message$)
; on peut envoyer le message
HTTPRequest=HTTPRequest(#PB_HTTP_Post, urlOk$) ; , "", #PB_HTTP_Debug|#PB_HTTP_NoSSLCheck) ; , Header() )
If HttpRequest
SetGadgetText(#Message,"")
FinishHTTP(HTTPRequest)
EndIf
EndIf
Until quit=1
; on ferme la fenêtre
CloseWindow(#Fenetre)
; avant de fermer, on attend que le thread soit fermé, c'est plus propre.
Repeat
ok =0
If IsThread(thread) = 0
ok = 1
EndIf
Until ok = 1
End
EndIf