跨会话播放声音

时间:2014-07-16 20:25:39

标签: javascript php audio

我为自己做了一个小小的聊天客户端,我和父亲一起使用,他们只是在学习这一切是如何运作的。无论如何,我想要一个按钮,可以在登录的会话中播放声音。如果,比方说 - 我的全家人都登录聊天,我需要所有人听到这些声音。

我拥有的是......好吧,当我点击它时,我有一个播放声音的按钮,但我是唯一一个听到它的人。

有办法做到这一点吗?

HTML:

<form name="message" action="">
        <input name="usermsg" type="text" id="usermsg" size="63" />
        <input name="submitmsg" type="submit"  id="submitmsg" value="Send" />
        <input name="play" type="button" id="play" value="Attention!" onclick="playme('sounds/cartoon.wav')">
</form>

使用Javascript:

  function playme (url){
        var audio=document.createElement("audio");
        audio.src=url;
        audio.play();
    }

2 个答案:

答案 0 :(得分:0)

我会通过在头部导入jquery来解决这个问题

<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
</head>

然后为你的javascript

<script>
function playme(url){
$.ajax({
type:'POST',
url: 'process.php',
data: {url: url},
async : true,
success: function(resp){
}
});
</script>

然后是你的process.php

<?php
file_put_contents("audio.txt", $_POST['url']);
?>

最后在你的javascript添加

<script>
var check=setInterval(function(){
$.ajax({
url: "audio.txt",
type: 'POST',
async: true,
complete: function(resp){
    var res = resp["responseText"];
    var audio=document.createElement("audio");
    audio.src = res;
    audio.play();

    }
});
},100);
</script>

对于打开页面的人,这将继续播放声音。为了避免检查谁在线的复杂性我建议只添加另一个输入框来清除声音

HTML:

<input type="button" name = "clear" onClick="clear()">

使用Javascript:

<script>
function clear(){
$.ajax({
type:'POST',
url:'clear.php',
success: function(resp){
}
});
</script>

in clear.php

<?php 
file_put_contents("audio.txt", "");
?>

答案 1 :(得分:0)

当您单击按钮而非发送消息时,您的代码基本上会播放消息。

假设这应该是一个没有jquery或xmlhttprequest的简单聊天客户端,并且你正在跟踪$_SESSION中收到的消息,那么你需要做的是比较你的php表单上收到的消息如果收到新消息,则保存消息并添加javascript以播放音频。 E.g。

if($_SESSION('last_message') != $input_message)
{
    echo '<script>window.onload = playme</script>';
}