2016-06-03 2 views
0

저희 회사에서 약간의 PHP/Ajax WebChat을 만들었습니다. 새 메시지를 수신 할 때마다이 메시지에있는 첫 번째 대답의 방법을 사용하여 알림 소리를 재생해야합니다.알림 소리를 재생하려고 할 때의 상태 503

How to play a notification sound on websites?

문제는 이제 모든 일반 컴퓨터에서 액세스 할 때 잘 작동하지만, (매우 제한) 회사 네트워크에서 콘솔 나에게 "사용할 수 없음을 HTTP 상태 503 서비스의"를 제공한다는 것입니다. 다른 인터넷 액세스에서 작동하기 때문에 이것은 매우 이상합니다. 추가 포인트는 다음과 같습니다. https://notificationsounds.com/

회사 네트워크에서 입력 한 경우 일부 사운드가 재생되고 일부는 재생되지 않습니다. 새로 고침 후 작동하는 소리가 새로 고침 전의 소리와 다릅니다. 소리를 무작위로 재생하는 것과 같습니다. 참고 : Chatserver는 내 집에 있습니다.

무엇이 문제 일 수 있으며 다른 게시물의 메서드를 사용할 필요가없는 어떤 종류의 해결 방법이 있습니까?

내가로드 알림 사운드를 재생하기 위해 사용하는 코드입니다 :

chat.playSound("the-calling"); 

playSound : function (filename) { 
    document.getElementById("sound").innerHTML= 
     '<audio autoplay="autoplay"> 
      <source src="https://notificationsounds.com/soundfiles/a516a87cfcaef229b342c437fe2b95f7/file-sounds-1068-the-calling.wav" /> 
      <source src="https://notificationsounds.com/soundfiles/a516a87cfcaef229b342c437fe2b95f7/file-sounds-1068-the-calling.ogg" type="audio/ogg" /> 
      <embed hidden="true" autostart="true" loop="false" src="/sounds/' + filename +'.mp3" /> 
     </audio>'; 
} 
+0

코드가 무엇입니까? 알림을 위해 –

+0

나는 내 질문에 링크에서 코드를 사용했습니다. –

+0

해당 사운드 파일을 채팅이있는 웹 서버에 다운로드하려고하면 크로스 도메인 문제 일 수 있습니다. –

답변

0

웹 사이트 http://notificationsounds.com 실제로 소리를 호스트하기위한 것이 아닙니다; 그들은 각 사운드에 "다운로드"링크를 제공하여 자신을 호스팅 할 수 있습니다. 그들의 사이트는 실제로 사용자가 배치하려는 요구를 충족시키기 위해 확장 할 수 없거나 IP 주소로 제한 될 수 있습니다. 소리를 내기를 원할 때마다 사이트를 방문하면서 채팅 응용 프로그램에있는 동시 사용자의 수를 곱해도되므로 상황에 따라 임의의 오류가 발생할 수 있습니다.

사이트 관리자가 회사의 공용 IP 주소가 이러한 유형의 문제를 일으킨다는 사실을 알게되면 회사의 IP 주소를 차단하여 사용자가 소리를 내지 못하게 할 수 있습니다. 몇 년 전 나에게 비슷한 일이 일어 났고, 그로 인해 내 부사장을 만나고 그의 사무실에서 '양질의 시간'을 보낼 수있는 기회를 얻었습니다.

그래서, 나는 2 가지 권하고 싶습니다 :

1) 소리 (들 다운로드) 당신은 자신의 사이트에서 원하는 당신

2

에 그들을 접대) 때문에, 오디오의 로딩을 캐시 이미 그렇게했다면 다시 불러 들이지 않아도됩니다.

var notification_sounds = { 
 
    "breaking-glass" : "8f121ce07d74717e0b1f21d122e04521/file-4f_glass-beaking-2", 
 
    "the-calling" : "a516a87cfcaef229b342c437fe2b95f7/file-sounds-1068-the-calling", 
 
    "ringo" : "5737c6ec2e0716f3d8a7a5c4e0de0d9a/file-47_oringz-pack-nine-01" 
 
}; 
 

 
function findOrCreateAudioPlayer(filename) { 
 
    var sound = notification_sounds[filename] || notification_sounds['breaking-glass']; 
 
    var player = $("#audio-" + filename); 
 

 
    if (player.length == 0) { 
 
\t \t player = $("<audio />").attr("id", "audio-" + filename); 
 
     $("<source />").attr("src", "https://notificationsounds.com/soundfiles/" + sound + ".mp3").appendTo(player); 
 
     player.appendTo($("body")); 
 
     $("<p />").text(filename).appendTo($("body")); 
 
    } 
 
    
 
    return player; 
 
} 
 

 
function playSound(filename) { 
 
    findOrCreateAudioPlayer(filename); 
 
    player = $("#audio-" + filename)[0]; 
 
    player.load(); 
 
    player.play(); 
 
} 
 

 
var sounds = ["nothing", "the-calling", "ringo", "breaking-glass"]; 
 
var sound = sounds[Math.floor(Math.random()*sounds.length)] 
 

 
playSound(sound);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

당신은 또한 complete jsFiddle demo을 시도 할 수 있습니다 :

나는 ( http://notificationsounds.com에서) 오디오를 캐싱의 데모를 만들었습니다.

이 작업을 완료하면 playSound(soundName)을 호출하여 선택한 사운드 (사운드 목록에서)를 재생할 수 있습니다. 데모는 등록 된 사운드 중 하나 (등록되지 않은 사운드)를 선택하고 코드 아래의 '코드 스 니펫 실행'버튼을 클릭하면 해당 사운드를 재생합니다.

이것은 특정 HTML 콘텐츠에 의존하지 않지만 필요에 따라 자신의 <audio> 요소를 만들고 캐시합니다.이 코드에서는 일단 소리가 캐시되면 페이지를 다시로드 할 때까지 원본 사이트에서 다시로드되지 않는다는 것을 알 수 있습니다. 원래 예에서

, 당신이 당신의 playSound 콜백을 변경할 수 있습니다 :

playSound : function (filename) { 
    playSound(filename); 
} 

혼란이 없다 단지 있도록 이름을 약간 변경하는 것이 현명 수 있습니다.

+0

파일을 다운로드하여 회사 사이트에 추가했습니다. 이제 더 이상 방화벽에 의해 차단되지 않습니다. 그러나 인터넷 탐색기 (슬프게도 여기에 기본 브라우저입니다)의 측면에서 MIME 형식 때문에 여전히 작동하지 않습니다. 채팅이 회사 내부 서버로 이동되기 때문에 곧 수정 될 것입니다. 어쨌든 귀하의 대답은 내 경보 기능을 간단히 설명하는 데 많은 도움이되었습니다. 그렇게 큰 감사드립니다. 물론 나는 대답을 점검 할 것이다. 비록 내가 전에 개념에 익숙했다하더라도) 슬프게도 이것은 일반적인 지식이 아닌 것처럼 보인다. –

+0

@BjoernUrban IE를 사용하는 거의 모든 것이 "슬프게도"또는 일종의 사과로 이어집니다. MIME 형식으로 인해 작동하지 않는다고 말할 때 그 의미는 무엇입니까? 나는 IE에서 테스트하지 않았으므로, 당신이 겪고있는 것을 모른다. 당신이 그것을 설명 할 수 있다면, 아마도 실행 가능한 해결책이있을 것입니다. –

+0

채팅은 비공개 서버에서 실행되는 프로젝트입니다. SharePoint를 통해 액세스되며 자동 로그인을 위해 SharePoint 권한을 사용합니다. 차단되지 않은 유일한 페이지이고 전체 액세스 권한이있는 사이트이기 때문에 오디오 파일을 SharePoint에 업로드했습니다. 하지만 IE는 항상 Sharepoint 서버의 Server Config에 파일을 재생하도록 IE에 알려주는 명령이 추가되어 SharePoint가 외부에서 호스팅되므로 변경할 수 없기 때문에 파일을 다운로드하려고합니다. 관리자가 지금 그것을 승인하고 채팅이 회사 서버로 이동합니다. –

관련 문제