Mac*_*ski 3 javascript html5 webrtc rtcdatachannel
我对RTCDataChannel有一个奇怪的问题.
我正在研究WebRTC,我已经开始进行WebRTC音频/视频聊天了.现在我想使用RTCDataChannel为其添加文本聊天和文件共享.
我已经像这样创建了RTCDataChannel:
var dataChannelOptions = {
reliable: true,
maxRetransmitTime: "2000"
};
dataChannel = yourConnection.createDataChannel("testDataChannel", dataChannelOptions);
dataChannel.onerror = function (error) {
console.log("dataChannel.OnError:", error);
};
dataChannel.onmessage = function (event) {
console.log("dataChannel.OnMessage:", event);
};
dataChannel.onopen = function (event) {
console.log("dataChannel.OnOpen", event);
dataChannel.send("Hello World!");
};
dataChannel.onclose = function (event) {
console.log("dataChannel.OnClose", event);
};
Run Code Online (Sandbox Code Playgroud)
我唯一接受的是从dataChannel.onopen的第一行登录.我没有从dataChannel.onmessage收到日志.
没有错误..
当我手动调用dataChannel.send时结果是一样的.
测试:
谷歌Chrome(50.0.2661.94)
Firefox(45.0.2)
任何人都可以帮忙吗?
我面临着同样的问题。根据 RTCDataChannel 文档,您应该处理 Peer Connection 对象上的回调以接收数据通道上的数据。下面的代码可能会有所帮助:
第 1 步:定义回调处理程序:
var handleDataChannelOpen = function (event) {
console.log("dataChannel.OnOpen", event);
dataChannel.send("Hello World!");
};
var handleDataChannelMessageReceived = function (event) {
console.log("dataChannel.OnMessage:", event);
};
var handleDataChannelError = function (error) {
console.log("dataChannel.OnError:", error);
};
var handleDataChannelClose = function (event) {
console.log("dataChannel.OnClose", event);
};
var handleChannelCallback = function (event) {
dataChannel = event.channel;
dataChannel.onopen = handleDataChannelOpen;
dataChannel.onmessage = handleDataChannelMessageReceived;
dataChannel.onerror = handleDataChannelError;
dataChannel.onclose = handleDataChannelClose;
};
Run Code Online (Sandbox Code Playgroud)
第 2 步:创建 RTC 对等连接:
var pc = new RTCPeerConnection();
pc.ondatachannel = handleChannelCallback;
Run Code Online (Sandbox Code Playgroud)
第 3 步:创建数据通道:
var dataChannel = pc.createDataChannel('dataChannelName', {});
dataChannel.onopen = handleDataChannelOpen;
dataChannel.onmessage = handleDataChannelMessageReceived;
dataChannel.onerror = handleDataChannelError;
dataChannel.onclose = handleDataChannelClose;
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您只需要添加 ondatachannel 回调处理程序即可接收数据。
归档时间: |
|
查看次数: |
1368 次 |
最近记录: |