我使用此tutorial与webRTC创建了一个音频/视频聊天,现在我想添加一个文字聊天;我阅读了有关频道的内容,并查看了example,但由于该示例不使用套接字,我仍然有一些问题。
我是否需要创建另一个频道来传输文字?我应该使用与音频/视频相同的频道吗?如果是这样,这对流媒体的质量有影响吗? 有人可以告诉我一些指导方针来开始添加聊天吗?
提前致谢!
更新
我添加了此代码
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个pcs时,如果我将文本从pc1发送到pc2它可以工作,但是如果我将文本从pc2发送到pc1则不然。你知道为什么吗?
答案 0 :(得分:1)
是的,使用相同的连接,因为它不会影响质量,只不过是单独的连接。
只需添加:
(
SELECT 'i' AS src
, ...
FROM ...
)
UNION ALL
(
SELECT 'o' AS src
, ...
FROM ...
)
ORDER BY ...
在致电var dataChannel = yourPeerConnection.createDataChannel("chat");
之前,您的数据频道就已存在。
请注意,createOffer
仅在未创建数据通道的情况下触发。
每个数据频道都是双向的,因此只需将ondatachannel
添加到创建的onmessage
:
dataChannel