- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用 ISBX/apprtc-ios视频聊天实现代码。这在 iPhone 和模拟器中完美运行。我想在两个对等点之间发送文本/字符串数据,我正在使用 RTCDataChannel
类。
以下是我的实现,但我无法建立连接。它总是给出状态 kRTCDataChannelStateConnecting
我怎样才能连接 RTCDataChannel?是否有适用于 iOS 的 WebRTC RTCDataChannel 的可用实现?
- (void)createNewDataChannel {
if (self.clientDataChannel) {
switch(self.clientDataChannel.state) {
case kRTCDataChannelStateConnecting:
NSLog(@"kRTCDataChannelStateConnecting");
break;
case kRTCDataChannelStateOpen:
NSLog(@"kRTCDataChannelStateOpen");
break;
case kRTCDataChannelStateClosing:
NSLog(@"kRTCDataChannelStateClosing");
break;
case kRTCDataChannelStateClosed:
NSLog(@"kRTCDataChannelStateClosed");
break;
default:
NSLog(@"Unknown");
}
return;
}
if (self.peerConnection == nil) {
NSLog(@"Peerconnection is nil");
}
RTCDataChannelInit *DataChannelInit = [[RTCDataChannelInit alloc] init];
DataChannelInit.maxRetransmits = 0;
DataChannelInit.isOrdered=false;
DataChannelInit.maxRetransmitTimeMs = -1;
DataChannelInit.isNegotiated = false;
DataChannelInit.streamId = 25;
RTCDataChannel *dataChannel =[_peerConnection createDataChannelWithLabel:@"commands" config:DataChannelInit];
dataChannel.delegate=self;
self.clientDataChannel = dataChannel;
if (self.clientDataChannel == nil) {
NSLog(@"Datachannel is nil");
}
else {
NSLog(@"Datachannel is working");
}
}
最佳答案
我能够通过 RTCDataChannel 发送数据。我所做的是在发送报价之前。我使用以下配置创建了 RTCDataChannelInit。
RTCDataChannelInit *datainit = [[RTCDataChannelInit alloc] init];
datainit.isNegotiated = YES;
datainit.isOrdered = YES;
datainit.maxRetransmits = 30;
datainit.maxRetransmitTimeMs = 30000;
datainit.streamId = 1;
self.dataChannel = [_peerConnection createDataChannelWithLabel:@"commands" config:datainit];
self.dataChannel.delegate=self;
两个设备都连接后,我检查了委托(delegate)函数中的状态。 channel 的状态是打开的。
- (void)channelDidChangeState:(RTCDataChannel*)channel
{
NSLog(@"channel.state %u",channel.state);
}
然后我按照下面的代码发送数据:
RTCDataBuffer *buffer = [[RTCDataBuffer alloc] initWithData:[str dataUsingEncoding:NSUTF8StringEncoding] isBinary:NO];
BOOL x = [self.dataChannel sendData:buffer];
这里给出了我使用的配置: https://groups.google.com/forum/#!searchin/discuss-webrtc/RTCDataChannel/discuss-webrtc/9NObqxnItCg/mRvXBIwkA7wJ
关于ios - WebRTC的RTCDataChannel在iOS中的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37850376/
我正在尝试学习 WebRTC 。我复制了一些代码,我得到了这个错误: 未能在“RTCDataChannel”上执行“发送”:RTCDataChannel.readyState 不是“打开” 任何人都可
我开了一个 RTCDataChannel ,并且默认情况下它似乎处于不可靠模式。 我想将它配置为可靠以保证数据包传送,但是 RTCDataChannelInit配置似乎没有这个设置。 dictiona
我正在尝试关注 this example创建数据 channel 。 对于我使用 websockets 的信号,它的行为如下: User A joins User B joins User B ask
我一直在阅读 this article用于信号解决方案。作者提到了在建立连接时使用 RTCDataChannel 发送信号。 Using RTCDataChannel for signaling A
我在使用 RTCDataChannel 时遇到了一个奇怪的问题。 我正在对 WebRTC 进行一些研究,并且我已经在进行 WebRTC 音频/视频聊天。现在我想使用 RTCDataChannel 添加
我已通过 RTC 数据通道连接了两个用户。这可行,但我想监视它生成的流量,例如 1Mbit/s。有办法得到这个吗? 其动机是一个用户创建内容,而另一方则镜像此内容,一种远程支持应用程序。该用例要求内容
Mozilla MDN声明单个 RTCPeerConnection 可以处理“理论上”65,534 个数据通道,但声明该限制将因浏览器而异。我无法找到有关 Chrome 中允许的最大 RTCDataC
我正在使用 RTCDataChannel。但是我通过 channel 发送的消息在另一个对等端没有收到。 代码如下: let audioConstraint : RTCPair = R
我正在尝试用 C++ 创建一个简单的 webrtc 服务器,所以我可以在浏览器和服务器之间传输数据(不需要点对点),我只需要 RTCdatachannel,不涉及媒体或音频。 我试过这个例子: htt
首先,我只是明白它不会是纯粹的 p2p 功能,它根本不是套接字,出于安全和 DDOS 目的。 但是我很难弄清楚提供、回答、SDP、ICE、STUN 等内容。似乎有很多抽象和要求。 这是否意味着总是需要
我正在尝试通过 WebRTC 分块发送文件,我想知道是否可以创建一个回调函数,以便在 RTCDataChannel.send() 完成发送文件的每个 block 后调用文件。 RTCDataChann
我正在尝试通过 RTCDataConnection 将字符串从一个浏览器窗口传递到另一个浏览器窗口。 有很多这种工作的例子,比如这里的一个: https://gitlab.com/lesmana/we
我遵循了有关 WebRTC 的整个教程并实现了一个简单的 p2p 聊天。我的信令服务器在 localhost:9090 上工作。当我尝试发送消息时,我收到: RTCDataChannel.readyS
我正在尝试关注 this example by Dan Ristic用于 RTCDataChannel 浏览器与 Google 的 p2p 通信 Channel API用于发信号。它似乎默默地失败了
我正在尝试使用 WebRTC's adapter.js 通过 RTCPeerConnection 和 RTCDataChannel 发送文本,但出现以下错误: Uncaught InvalidStat
我正在尝试实现 RTCDataChannel (webRTC)。 它在 Firefox 中运行良好,但在 chrome 中运行不佳。 Chrome 和 Firefox 都是最新版本。 Chrome 中
我是一名优秀的程序员,十分优秀!