Flutter WebRTC 电话

使用 MQTT 客户端和 Flutter,WebRTC 双向视频通信的示例源代码。

WebRTC

WebRTC를 이용한 화상/데이터 통신은 기본적으로 시그널 서버가 필요하다. 일반적으로 Websocket을 많이 사용하는데 서버는 클라이언트에서 전송되는 SDP, Candidate를 릴레이 하여 클라이언트가 연결할 상대방의 IP와 Port 정보를 주고 받은 다음 받은 정보를 이용하여 P2p 접속을 시도한다.

WebRTC图像/数据传输需要信令服务器。通常使用Websocket,但服务器会中继客户端发送的SDP和Candidate,以交换客户端将连接到的对方的IP和端口信息,然后尝试使用接收到的信息进行P2P连接。

MQTT

MQTT는 발행/구독 기반으로 일대일, 일대다 데이터 통신에 적합하고 구독 채널을 트리구조로 구성 할 수 있기 때문에 Websocket에서 채팅방-서브 채팅방을 구현하는 기능을 아주 간단하게 구현 할 수 있다.

MQTT基于发布/订阅,适用于一对一和一对多数据通信,并且可以以树状结构组织订阅通道,因此在WebSocket中可以非常简单地实现聊天室-子聊天室的功能。

构想

WebRTC 화상통신앱을 만들며 처음부터 이 생각을 했다. WebSocket으로 채팅방을 만들지 않고 MQTT를 이용하면 안될까? Mosquitto 서버라면 보안성 문제도 쉽게 해결 할 수 있고 성능도 우수한 시그널 서버로 활용할 수 있지 않을까? 그래서 한번 해봤다.

在开发WebRTC视频通信应用时,我从一开始就有这个想法。为什么不用MQTT而不是WebSocket来创建聊天室呢?Mosquitto服务器是否可以轻松解决安全问题,并作为高性能的信令服务器发挥作用?所以我就试了试。

결론적으로 이 프로젝트에서 WebRTC 통신을 하기 위한 시그널 서버는 만들지않았다.

总而言之,在此项目中没有构建用于WebRTC通信的信令服务器。

其他

P2p연결을 위해 Google Stun 서버를 사용하며 3G, LTE에서 연결이 되지 않을수도 있다. Stun 서버를 통한 P2p 연결이 불가능한 경우는 Turn 서버를 개별적으로 설치하고 운영해야 하는데 오픈소스인 Coturn을 활용하여 운용이 가능하다. WebRTC와 관련한 코드는 시그널 기능에 따른 많은 코드들이 요구되지만 셈플에서는 가장 기본적인 통신 기능만을 구현 했다.

P2P连接使用Google Stun服务器,在3G、LTE下可能无法连接。如果通过Stun服务器进行P2P连接不可行,则需要单独安装和运行Turn服务器,但可以使用开源的Coturn进行操作。WebRTC相关的代码需要大量的信号功能代码,但示例仅实现了最基本通信功能。
WebRTC代码需要根据信号功能来编写大量的代码,但该示例只实现了最基本的通信功能。

http://practical.kr/?p=521

GitHub

查看 Github