1. 云栖社区>
  2. PHP教程>
  3. 正文

第46篇 WebRTC及点阵笔及PHP研究(九)

作者:用户 来源:互联网 时间:2017-12-01 15:11:30

phpwebrtc研究点阵

第46篇 WebRTC及点阵笔及PHP研究(九) - 摘要: 本文讲的是第46篇 WebRTC及点阵笔及PHP研究(九), 一、WebRTC研究 1.1 呼叫挂断    用户只有挂断了,还可以呼叫别的用户(类似打电话)。 1.2 完成信令服务器    信令服务器不加SSL的话是不安全的,WebSocket协议支持SSL,类似HTTP支持HTTPS。你可以在连


一、WebRTC研究

1.1 呼叫挂断

   用户只有挂断了,还可以呼叫别的用户(类似打电话)。

1.2 完成信令服务器

   信令服务器不加SSL的话是不安全的,WebSocket协议支持SSL,类似HTTP支持HTTPS。你可以在连接到服务器时,通过简单地使用wss://来开启这个功能。

1.3 WebSockets

 WebSockets的好处是它为浏览器带来了双向通信。WebSockets的几个困境:

  a.网络防火墙

   在理想情况下,WebSockets是可靠的,但在代理设置的情况下,会变得不稳定,比方说虚拟专用网络(VPN)的额外开销或复杂的防火墙可导致连接的成功率急剧下降。

  b.WebSockets信令服务器

在面对一个真实的网络环境时,使用WebSockets做信令服务器会有停顿,所以,因网络问题不得不做备选方案。

1.4 XMPP

 XMPP是一个即时通信协议,它的目标是实现即时通信、用户在线和通讯录。

1.5 SIP

SIP:会话初始协议,它是一个致力于移动网络和电话系统的信令协议。

1.6 offer

  在信令中,操作的顺序是offer,answer,然后互相发送候选直到连接成功。

二、把客户端连接到一起

2.1 客户端应用

   客户端应用的目标是让不同地方的用户互相连接并进行通信。

2.2 获取一个连接

  首先要做的是与信令服务器之间创建连接。

2.3登陆到应用程序

   使用唯一的用户名登陆是与服务器的首次交互行为。它用来识别我们的身份,同时给别的用户一个唯一的标识来呼叫我们。

2.4 开始一个对等连接

首先要startCollection,因为startCollection方法是任何WebRTC连接的第一步。接下来:

 a.从相机中获取视频流

 b.验证用户的浏览器是否支持WebRTC

 c.创建RTCPeerConnection对象

2.5 发起通话

   我们可以和远程用户发起通话。首先发送offer给另一个用户来开始整个过程,一旦用户得到这个offer,他将创建一个响应并开始交换ICE候选,直到成功连接到服务器。

2.6 检测通信

  调试实时应用是非常困难的。建议用chrome检查网络通信。

2.7 挂断电话

   通信结束要挂断电话,挂断电话时要通知其他用户,我们试图关闭通信。当触发挂断事件时,首先需要通知服务器我们不再进行通信。接着,需要告诉RTCPeerCollection进行关闭,这将停止发送数据流给其他用户。最后,再次设置连接,把连接实例设置为打开状态,以便我们接受新的通话。

三、使用WebRTC发送数据

3.1任意数据

   WebRTC擅长进行数据传输,不仅仅是音频和视频流,还包括我们希望的任意数据类型。

3.2流控制传输协议和数据传输

   目前传输常用的是TCP连接,即使用如AJAX和WebSockets技术将数据发送到服务端,并在另一端接收。WebRTC对等连接中使用流控制传输协议(SCTP)作为数据传输的方式。

SCTP位于数据传输层安全协议(DTLS)之上,每个WebRTC连接都实现了它并且为数据传输提供出口绑定到数据通道上。所有这些都位于UDP之上,它为WebRTC数据提供基本的传输方法。协议顺序如下:

第46篇 WebRTC及点阵笔及<a href=PHP研究(九)">

SCTP特点如下:

a.      传输层的安全性,基于DTLS。

b.      传输层可以运行在可靠的或不可靠的模式中。

c.      传输层可以担保或者无担保数据包顺序。

d.      数据是面向消息进行传播的,允许消息分解传输,在接收端重组。

e.      传输层支持流量和阻塞协议。

注:SCTP解决了TCP的一些问题,同时利用了UDP的传输能力。

3.3RTCDataChannel对象

 数据通道会存在于以下几种状态中:

 连接中:这是默认状态,当数据通道等待一个连接。

 开启:这种状态下,连接已经被建立,可以进行通信。

关闭中:通道正在被销毁。

关闭:这种状态下,通道关闭,无法进行通信。

3.4数据通道选项

选项由以下几部分组成:

reliable:设置消息传递是否进行担保。

ordered:用来设置消息的接受是否需要按照发送时的顺序。

maxRetransmitTime:设置消息发送失败时,多久重新发送。

protocol:设置强制使用其他子协议,但当用户代理不支持该协议时会报错。

negotiated:此选项用来设置开发人员是否有责任在两边创建数据通道,还是浏览器来自动完成这个步骤。

id:这个用来设置通道的唯一标识,可以在多通道时进行区分。

注:以上主要使用的配置项是reliable和ordered,当设置为true时数据通道表现更像TCP,设置为false时,表现更像UDP。

3.5发送数据

  发送数据包,目前常用的数据通道的类型如下:

String:JavaScript基本的字符串。

Blob:一种文件格式的原始数据。

ArrayBuffer:确定数组长度的数据类型。

ArrayBufferView:基础的数据视图。

3.6加密与安全

 加密技术在对等应用中应满足以下要求:

  信息在传输过程中被窃取,无法进行读取。

  第三方不能够伪造消息,使消息看上去像是接收者发送的。

  消息在传输给另一方时不能进行编辑。

加密算法的快速性,以支持客户端之间的最大带宽。

四、bug处理

4.1websocket中的ws库bug

第46篇 WebRTC及点阵笔及PHP研究(九)

WebSocket connection to ‘ws://localhost:8888/’failed:

第46篇 WebRTC及点阵笔及PHP研究(九)

wscat不是内部命令或外部命令,也不是可运行的程序或批处理文件。

解决方案:说明没安装wscat插件,安装命令如下:

npm install -g wscat

第46篇 WebRTC及点阵笔及PHP研究(九)

再次运行:wscat –c ws://localhost:8888/ 就可以了。

4.2 WebSocket

  WebSocketprotocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成。

在 WebSocketAPI,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

五、点阵笔对接一对一

    这个目前需要一个插件对接一对一,会C++才行。

 

六、PHP

6.1 PHP的另一种标记方式

常用:<?php   ?>

不常用: <script language=“php”> </script>

6.2 html中字滚动效果

第46篇 WebRTC及点阵笔及PHP研究(九)

第46篇 WebRTC及点阵笔及PHP研究(九)

代码:

第46篇 WebRTC及点阵笔及PHP研究(九)

 6.3 php控制html

 代码如下:

第46篇 WebRTC及点阵笔及PHP研究(九)

效果如下:

第46篇 WebRTC及点阵笔及PHP研究(九)

注释掉:$hdw=111;效果如下:

第46篇 WebRTC及点阵笔及PHP研究(九)

由此可知:php能控制html。

2016年9月22日星期四

 

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , webrtc , 研究 点阵 ,以便于您获取更多的相关知识。