问题描述
我正在开发一个项目,我可以将音频从服务器实时流式传输到 HTML 文件,我在客户端使用 flask_socketio
和 Socket io。我不确定它为什么起作用,这是我的代码。
server.py
from flask import Flask
from flask_socketio import SocketIO,send
app = Flask(__name__)
app.config['SECRET_KEY'] = 'mysecret'
socketio = SocketIO(app,cors_allowed_origins='*')
with open("bensound-spinningcollins.wav","rb") as fwav:
data = fwav.read(8)
while data:
data = fwav.read(8)
@socketio.on('message')
def handleMessage(msg):
print('User has connected')
while True:
send(data)
if __name__ == '__main__':
socketio.run(app)
这是我的客户端代码
<html>
<head>
<title>Chat Room</title>
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Quicksand&display=swap" rel="stylesheet">
<script src="https://cdn.socket.io/3.1.1/socket.io.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<link rel="stylesheet" href="style.css">
</head>
<body>
<script type="text/javascript">
var socket = io.connect('http://127.0.0.1:5000');
socket.on('connect',function() {
socket.send('connect');
});
socket.on('message',function(msg) {
audioObj = new Audio(msg);
audioObj.play();
});
</script>
</body>
</html>
解决方法
没有足够的代表发表评论,很抱歉回复。
我认为您真正要寻找的是 WebRTC。
Socket.io 非常适合来回发送消息,但不太适合连续流式传输。
如果你只想在消息上播放声音,为什么不直接从 JS 访问音频?