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()経由でサーバーを呼び出すことにしました。ご協力いただきありがとうございます!
これはすべてデスクトップブラウザで動作しますか? – wrangler
@wranglerそれは完全にクロム(Ubuntuデスクトップ)で動作します。私はFirefox(Ubuntuデスクトップ)とChromeモバイルでオーディオ出力を得ることができますが、ボタンを押すとリスナー機能が起動されません。 iOSのSafariはまったく動作しません。 – javathunderman
イベントリスナー内で 'console.log'を試してみましょう。リスナーが呼び出されていない場合、呼び出されていない場合、問題が発生する可能性があります。 – wrangler