Node.js - 使用 P2P 的客户端到服务器 WebRTC
Node.js - Client to Server WebRTC with P2P
在考虑使用客户端到服务器模型(如 Discord)实现 WebRTC 之后,我得出的结论是实现此目的的方法是拥有 2 个客户端——服务器和客户端。音频流可以叠加并以 1 个流的形式发送回用户。
backend/server.js
const clientPeer = new Peer({ initiator: true, wrtc });
clientPeer.on('connect', () => console.log('hi client, this is server'));
clientPeer.on('data', (data) => console.log('got a message from client peer: ', data));
frontend/index.js
serverPeer.on('connect', () => console.log('Connected to server'));
serverPeer.on('stream', async (stream) => {
const video = document.createElement('audio');
('srcObject' in video)
? video.srcObject = stream
: video.src = window.URL.createObjectURL(stream);
await video.play();
});
我将如何实现在客户端和服务器之间发送媒体流?
一个可能的解决方案是:创建一个MediaRecorder
对象,它可以在客户端记录媒体流。该对象随时间发出数据块。您可以通过 WebSocket 将这些块发送到服务器。在服务器端,您可以对数据块做任何您想做的事情。
更多详情,您可以查看此https://mux.com/blog/the-state-of-going-live-from-a-browser/.
https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder
另一种解决方案可以是:Making a node.js application a PEER with WebRTC
在考虑使用客户端到服务器模型(如 Discord)实现 WebRTC 之后,我得出的结论是实现此目的的方法是拥有 2 个客户端——服务器和客户端。音频流可以叠加并以 1 个流的形式发送回用户。
backend/server.js
const clientPeer = new Peer({ initiator: true, wrtc });
clientPeer.on('connect', () => console.log('hi client, this is server'));
clientPeer.on('data', (data) => console.log('got a message from client peer: ', data));
frontend/index.js
serverPeer.on('connect', () => console.log('Connected to server'));
serverPeer.on('stream', async (stream) => {
const video = document.createElement('audio');
('srcObject' in video)
? video.srcObject = stream
: video.src = window.URL.createObjectURL(stream);
await video.play();
});
我将如何实现在客户端和服务器之间发送媒体流?
一个可能的解决方案是:创建一个MediaRecorder
对象,它可以在客户端记录媒体流。该对象随时间发出数据块。您可以通过 WebSocket 将这些块发送到服务器。在服务器端,您可以对数据块做任何您想做的事情。
更多详情,您可以查看此https://mux.com/blog/the-state-of-going-live-from-a-browser/.
https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder 另一种解决方案可以是:Making a node.js application a PEER with WebRTC