gpt4 book ai didi

javascript - 从 socket.io 收到消息时从客户端播放音频 - node.js

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:28 25 4
gpt4 key购买 nike

我已经搜索了一段时间来寻找这个问题的解决方案,但没有找到太多。

我的目标是从 udp 客户端接收消息,服务器接收该消息并将其转发到 Web 客户端,每次收到消息时 Web 客户端都会播放音频剪辑。但是,由于某种原因,音频无法播放。如果我直接从目录打开页面,则可以播放音频,但如果我尝试通过本地主机访问它,则无法加载。有谁知道解决方案吗?

这是客户端 JavaScript。

var mySound = new Audio('/public/audio/Bloom.mp3');
mySound.load();
var socket = io.connect('http://localhost');
socket.on('message', function(data){
console.log(data);
$('#content').text(data);
mySound.play();
//document.getElementById('audiotag1').play();
});

此页面由 server.js 提供服务,这是一个使用 socket.io 和express 的node.js 文件。我没有从 console.log 收到任何错误。这是server.js

var app = require('express')()
, server = require('http').Server(app)
, io =require('socket.io')(server)
, dgram = require('dgram');

var httpPort = 1234;
var udpPort = 5000;

server.listen(httpPort);

app.use(server.express.static( __dirname + '/public'));

app.get('/', function(request, response){
var ipAddress = request.socket.remoteAddress;
console.log("New express connection from: " + ipAddress);
response.sendfile(__dirname + '/public/index.html');
});

var udpSocket = dgram.createSocket('udp4', function(msgBuffer){
var jsonMessage = JSON.parse(msgBuffer);
io.sockets.emit('message', JSON.stringify(jsonMessage));
});
udpSocket.bind(udpPort, '127.0.0.1');

您可以访问此链接查看 chrome 出现的错误。 http://postimg.org/image/xkv7a2kwb/

有人知道如何解决这个问题吗?

最佳答案

当静态文件的 Express 配置不正确时,通常会发生此错误。

从您的客户端 JavaScript 中,我可以看到您将静态文件存储在 public 文件夹中。

所以在服务器端的某个地方你应该有这样的东西:

app.use('/public', express.static('/path/to/public'));

这样做 http://localhost/public/audio/Bloom.mp3 请求将通过 /path/to/public/audio/Bloom.mp3 提供服务文件。

警告:

自 Express 4 以来,有 "no more app.use(app.router)"和“所有路由方法将按照它们出现的顺序添加”。这意味着您必须将上面的代码行放在第一个 app.get(...)app.post(...) 等之前。 p>

希望这些信息对某人有所帮助。

关于javascript - 从 socket.io 收到消息时从客户端播放音频 - node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24186848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com