Jouer un son lors d'un evenement chat ajax

Fermé
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 - 3 avril 2010 à 09:34
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 - 5 avril 2010 à 04:03
Bonjour,
J'ai un petit souci, j'ai beaucoup cherché mais en vain
Je souhaiterais jouer un son lors d'un evenement sur mon chat php ajax.
Ar exemple jouer un son lors qu'un nouveau message est posté ou lorsque quelqu'un se connecte

Quelqu'un pourrait m'aider please.
Merci d'avance.




A voir également:

18 réponses

creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 57
4 avril 2010 à 08:10
C'est JavaScript (côté client !) qui sert à jouer un son (ça ne sert à rien de lire des sons sur le serveur). Il faut initialiser le(s) lecteur(s) comme sur ma page d'exemples, avec:

<script type="text/javascript" src="jsound.js"></script>
<script type="text/javascript">
     sound.decks(3);
     sound.load('connexion.mp3', 0);
     sound.load('nouveaumessage.mp3', 1);
     sound.load('nouveauchatteur.mp3', 2);
</script>



Il y a forcément une partie qui gère les événements 'nouveau message', 'nouveau chatteur' en ligne, etc., dans ton code JavaScript.
Il suffit ensuite d'ajouter
     sound.play(1);

dans la partie qui gère l'affichage d'un nouveau message pour qu'un son soit lu en même temps sur le PC.


Pour le chat, est-ce qu'il s'agit d'un module tout fait ?
3
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 57
3 avril 2010 à 10:10
Bonjour,

J'ai justement codé une petite librairie JavaScript qui permet de lire des sons en utilisant un player Flash simplifié. Les fichiers sont à l'adresse https://www.hugedomains.com/domain_profile.cfm?d=creadiff&e=com.

Il faut que tu télécharges 'sound.swf' et 'sound.js' sur ton serveur. Le fichier JavaScript contient une classe qui permet de lire des sons, qui sont gérés sous forme de 'decks'. Des mp3 peuvent être assignés à chaque deck; par défaut, 2 decks sont créés.

Exemple:
<script type="text/javascript" src="sound.js"></script>
<script type="text/javascript">
     sound.load('son1.mp3', 0);    // charge un son dans le premier deck
     sound.load('son2.mp3', 0);    // charge un son dans le deuxième deck
     sound.play(0);
</script>
<button onclick="sound.play(1);">Jouer !</button>


Dans cet exemple, on charge un son différent dans chacun des decks; au démarrage, 'son1.mp3' est joué. Quand on clique sur le bouton, le deuxième son est joué.
Il te suffit d'ajouter une ligne du type 'sound.play(0);' dans ton code, à l'endroit où tu mets la conversation à jour.
2
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 3
3 avril 2010 à 17:42
Merci pour ta réponse rapide, mais comment ça fonctionne?
comment je fais pour lire mon mp3.

Désolé, je suis un peu perdu en javascript.
As-tu un exemple qui fonctionne.
Avant de poster, j'ai potasser un petit peu, mais sans succès

Alors, si j'ai bien compris , l'idée est de precharger le mp3, et ensuite de l'appeller quand on en a besoin, ceci en utilisant javascript, c'est ça?

Merci pour les réponses,
a bientôt
0
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 57
Modifié par creadiff le 4/04/2010 à 07:24
Voilà un petit exemple d'interface utilisant le script en question. Comme tu parlais de gérer des événements en AJAX, j'ai supposé que tu avais déjà de bonnes connaissances en JavaScript.

J'ai commenté le code source pour plus de clarté.

Si tu as de nouveau des questions, n'hésite pas !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 3
4 avril 2010 à 07:56
merci pour ta reponse
en fait ce que je veux faire, c'est de pouvoir rajouter un son a un evenement dans mon chat en php et ajax
Alors je voudrais que lorsque quelqu'un se connecte, qu'il yait un son.

En fait la partie serveur, php c'est ok, j'arrive a gerer et a crrer une variable dès que quelqu'un se connecte.

Je voudrais juste jouer un son en appelant une fonction javascript qui se trouve sur le fichier mere ou principale.

ensuite, dès que le son est joué, j'efface ma variable qui a été créé, ainsi de suite.

A bientôt et merci
0
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 3
4 avril 2010 à 08:31
Merci tu es vraiment rapide et décidé à m'aider
alors tu as bien compris ce que je veux faire.....

Je ne joue pas le son coté serveur, je veux l'appeller comme tu as dit.

En faisant justement comme ça
sound.play(1);

Mais comment appeller ça ?

Je dois faire :

<script type="text/javascript">
function {
sound.play(1) ;
}
</script>

et ensuite faire :
<body onload="function sound.play(1) ;" >

Mais je doute que ça soit juste
0
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 3
4 avril 2010 à 08:35
Sorry, j'oubliais, c'est un chat que je code moi meme, en php et ajax
en fait j'aime coder, je suis plutot php

là je me mets au javascript

A bientôt
0
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 57
Modifié par creadiff le 4/04/2010 à 09:12
Pour initialiser, il faut charger le script (le fichier jsound.js est à placer dans le même dossier que la page PHP):

<script type="text/javascript" src="jsound.js"></script>



Puis créer un deck, et charger un mp3 dans celui-ci:

<script type="text/javascript">
     sound.decks(1);                            // crée un deck
     sound.load('connexion.mp3', 0);       // charge un son dans ce deck
</script>



Pour que le son soit joué au chargement de la page, il faut faire:

<body onload="sound.play(0) ;">



Normal que je soie décidé à t'aider, suis tout fier de ma nouvelle librairie ^^
Et puis c'est jamais facile de débuter...

Sinon, quand tu veux exécuter des instructions en JavaScript, inutile (et non recommandé!) de les faire précéder de function, cette instruction sert plutôt à déclarer une fonction.
0
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 3
4 avril 2010 à 10:07
Salut
malheureusement , ça ne marche pas

j'ai fait un test avec

<script type="text/javascript" src="jsound.js"></script>
<script type="text/javascript">
sound.load('sounds/sound_1.mp3', 0); // charge un son dans le premier deck
sound.load('sounds/sound_2.mp3', 0); // charge un son dans le deuxième deck
sound.play(0);
</script>
<button onclick="sound.play(1);">Jouer !</button>


mais ça ne fonctionne pas, c'est bizarre non.....
0
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 3
4 avril 2010 à 16:13
je ne veux pas etre trop embétant , mais sur ce coup là j'aurais besoin d'un peu d'aide, je suis encore au lait qu'en a ajax et Javascript.

Alors je poste mon code, peut etre que ça aidera.

Ceci est ma fonction "ajax" qui appelle la page son.php toutes les 2 secondes

<script language="javascript" type="text/javascript">
function refresh_div() {
var xhr_object = null;
if (window.XMLHttpRequest) {
xhr_object = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
} catch(e) {
}
} else {
}
var method = 'GET';
var filename = 'son.php';
xhr_object.open(method, filename, true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var tmp = xhr_object.responseText;
document.getElementById('div_son').innerHTML = tmp;
}
};
xhr_object.send(null);
}
window.onload = function() {
setTimeout(refresh_div, 2000);
};
</script>



- une partie du fichier son.php :

<?php
//la variable $son_messages="ok" si il ya un nouveau message
if ($son_messages=="ok") {
//jouer mp3
//effacer la valeur du champs son message
$SQL33 = "UPDATE sons SET son_messages='$vide'";
$result33 = mysql_query($SQL33);
} ?>

-div_son est la div qui affiche
-son.php est la page de traitement

En gros voilà ce que je veux faire

Merci de m'aider, ce serait vraiment cool.
0
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 3
4 avril 2010 à 17:58
Merci de ta réponse, mais je ne comprends pas ce que tu veux dire

peux-tu eclairer ma lenterne , please

ça a l'air si simple et pourtant si compliqué


A bientôt
0
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 57
4 avril 2010 à 18:00
Par rapport au script de ton avant-dernier post...

1 - est-ce que tu as bien copié le fichier jsound.js dans le même dossier que celui où se trouve la page qui l'appelle ?

2 - est-ce que les 2 fichiers mp3 sont bien dans le dossier relatif sound ?
0
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 3
4 avril 2010 à 18:08
salut encore merci pour tes efforts
alors j'ai fais comme indiqué
les deux fichiers jsound.js et jsound.swf sont dans le meme repertoire que le script qui les appelle


mes deux fichiers son sont bien présent, je les ai testé en dur c'est ok

je suis largué là

apr contre j'ai pas compris ton précédent post

je pense que tu méritera une medaille si j'arrive a bout

ta classe est basé sur soundmanager je crois, je connais un petit peu

A bientôt
0
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 3
4 avril 2010 à 19:48
Allo,
je vois que tu as eu un peu marre de mes questions,
je m'en vais creuser encore un peu

MErci
0
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 57
4 avril 2010 à 21:34
Damned ! Je ne connaissait pas soundmanager, après avoir fait un tour sur leur site, je vois que ce que j'ai fait existait déjà... Tant pis !

Je crois avoir trouvé ce qui ne va pas dans ton code:

1- Tu veux charger des mp3, mais les decks ne sont pas initialisés par
sound.deck(2)


2- Les deux mp3 sont envoyés au deck 0 (le deuxième paramètre de la fonction load est le numéro du deck; tu en veux 2, donc le premier son est pour le deck 0 et le deuxième pour le deck 1)

3- Tu veux ensuite déclencher la lecture par click sur un bouton, mais tu déclenches la lecture du deck 1, qui n'a pas été créé (1) et ne contient pas de mp3 (2).

Corrige ces erreurs, et je te garantis que ça fonctionnera !
0
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 3
5 avril 2010 à 00:41
SAlut

<script type="text/javascript" src="jsound.js"></script>
<script type="text/javascript">
sound.decks(2);
sound.load('sounds/sound_1.mp3', 0); // charge un son dans le premier deck
sound.load('sounds/sound_2.mp3', 1); // charge un son dans le deuxième deck
sound.play(0);
</script>


<button onclick="sound.play(0);">Jouer !</button>

ça marche pas,
mais pas grave j'abandonne


A bientôt
0
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 57
5 avril 2010 à 03:54
Au fait, l'interaction Flash-JavaScript ne peut pas fonctionner en local (raisons de sécurité)... ce qui fait que la librairie n'est pas testable en local. As-tu essayé en essayant directement avec les sources du .zip ?
0
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 3
5 avril 2010 à 04:03
Salut
oui j'ai envoyé sur mon serveur, j'ai pas testé en local pour voir

Mais je fais une pause, ça ne fonctionne pas,
je vais essayer autre chose ou laisser tomber ça
du moins pour l'instant
0