javascript - 将文本聊天添加到 webRTC 音频/视频聊天

标签 javascript node.js text chat webrtc

我使用这个 tutorial 创建了一个与 webRTC 的音频/视频聊天,现在我想添加文字聊天;我阅读了有关 channel 的信息并检查了这个 example , 但由于示例没有使用套接字,我还有一些疑问。

我是否需要创建另一个 channel 来传输文本?我应该使用与音频/视频相同的 channel 吗?如果是这样,这会影响流媒体的质量吗? 有人可以告诉我一些开始添加聊天的指南吗?

提前致谢!

更新:

我添加了这段代码

function doCall() {
    console.log('Sending offer to peer');
    //create channel for chat
    var dataChannelParams = {
        reliable: true,
        ordered: true
    };
    var sendChannel = pc.createDataChannel("chat", dataChannelParams);

    pc.ondatachannel = function(event) {
        var receiveChannel = event.channel;
        receiveChannel.onmessage = function(event) {
            console.log("ricevo questo messaggio: " + event.data);
            document.querySelector("textarea#receiveText").innerHTML = event.data;
        };
    };

    document.querySelector("button#sendData").onclick = function() {
        var data = document.querySelector("textarea#inputText").value;
        console.log("invio questo messaggio: " + data);
        sendChannel.send(data);
    };

    pc.createOffer(setLocalAndSendMessage, handleCreateOfferError);
}

我创建了两个 textarea 对象,一个带有发送按钮,另一个用于接收文本。 但是,它仅在一个方向上有效:当我在同一页上有 2 个 pc 时,如果我将文本从 pc1 发送到 pc2 它可以工作,但如果我将文本从 pc2 发送到 pc1 则不能。你知道为什么吗?

最佳答案

是的,使用相同的连接,因为它对质量的影响不会超过单独的连接。

只需添加:

var dataChannel = yourPeerConnection.createDataChannel("chat");

在您调用 createOffer 之前,这就是您的数据通道。

更新:

请注意,ondatachannel 仅在未创建数据通道的那一端触发。

每个数据通道都是双向的,所以只需在创建的dataChannel中添加onmessage即可:

var dataChannel = pc.createDataChannel("chat", dataChannelParams);

dataChannel.onmessage = function(event) {
    document.querySelector("textarea#receiveText").innerHTML = event.data;
};

关于javascript - 将文本聊天添加到 webRTC 音频/视频聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38104519/

相关文章:

node.js - 微软 bot 框架结束时的回调

python - 在Python中将字符串按空格分割成最大长度的子字符串

node.js - 使用 NodeJS 为 MongoDB 增加值(value)

javascript - prev() 似乎不起作用

javascript - 需要检测 Javascript : function calls/args - ANTLR?

javascript - 如何将基于内部状态的 React 应用程序转换为基于 Redux 的应用程序?

javascript - 如何使用 FB FQL 多查询的结果?

javascript - 下划线js替换对象中的项目

node.js - 如何使用 id 在 firebase 中连接两个单独的表(不是子表)?

vb.net - 在 VB.NET 中循环遍历文本文件的行