我寫在Node.js和受socket.io一個Web應用程序。我有幾個按鈕監聽器,當用戶點擊一個按鈕然後執行一個特定的操作(在這種情況下,播放一個小音)時就會啓動。出於某種原因,這些按鈕在Chrome/Chromium中完美工作,但不適用於Firefox或移動瀏覽器(我已通過iOS上的Safari和Android上的Chrome對其進行了測試)。Socket.io按鈕監聽器不工作的移動
這裏是我的代碼:
var socket = io.connect('http://localhost:5000');
var long = document.getElementById('long');
short = document.getElementById('short');
long.addEventListener('click', function() {
socket.emit('long', socket.id);
socket.broadcast.emit('audio file', {
audio: true,
audioBuffer: buf
});
});
short.addEventListener('click', function() {
socket.emit('short', socket.id);
socket.broadcast.emit('audio file', {
audio: true,
audioBuffer: buf2
});
});
socket.on('long', function(data) {
socket.broadcast.emit('audio file', {
audio: true,
audioBuffer: longbuf
});
console.log("Transmitting", socket.id);
});
socket.on('short', function(data) {
socket.broadcast.emit('audio file', {
audio: true,
audioBuffer: shortbuf
});
console.log("Transmitting", socket.id);
});
server.js
var express = require('express');
var socket = require('socket.io');
var fs = require('fs');
var app = express();
var server = app.listen(5000, function() {
console.log("Listening to requests on port 5000")
});
app.use(express.static('public'));
var io = socket(server);
io.on('connection', function(socket) {
console.log('New transmitter', socket.id);
fs.readFile(__dirname + '/public/sounds/trollism.wav', function(err,
longbuf) {
socket.on('long', function(data) {
socket.broadcast.emit('long', data);
console.log("Long press from " + socket.id);
socket.broadcast.emit('audio file', {
audio: true,
audioBuffer: longbuf
});
});
});
fs.readFile(__dirname + '/public/sounds/trollism2.wav',
function(err, shortbuf) {
socket.on('short', function(data) {
socket.broadcast.emit('long', data);
console.log("Short press from " + socket.id);
socket.broadcast.emit('audio file', {
audio: true,
audioBuffer: shortbuf
});
});
});
});
感謝您的幫助。
編輯:決定去jfriend00的路線,使客戶通過socket.emit調用服務器()。謝謝你的幫助!
你確定這一切都適用於dektop瀏覽器? – wrangler
@ wrangler它完全適用於Chrome(Ubuntu桌面)。我能夠在Firefox(也是Ubuntu桌面)和Chrome移動設備上獲得音頻輸出,但按下按鈕不會觸發監聽器功能。 iOS上的Safari並不起作用。 – javathunderman
嘗試'console.log'事件偵聽器裏面,看看是否監聽器被調用時,如果不叫則可能是問題源於按鈕大教堂在HTML好象叫的話,我想事件聽了後沒有發出消息。 – wrangler