Java使用websocket和WebRTC实现视频通话

最近这段时间折腾了一下WebRTC,这两天终于是抽了时间把WebRTC搞定了,去年就想弄的,但是确实没时间。看了网上的https://apprtc.appspot.com/的例子(可能需要翻墙访问),这个例子是部署在Google App Engine上的应用程序,依赖与GAE的环境,后台的语言是python,而且还依赖Google App Engine Channel API,所以无法在本地运行,也无法扩展。费了一番功夫研读了例子的python端的源代码,决定用Java实现,Tomcat7之后开始支持WebSocket,打算用WebSocket代替Google App Engine Channel API实现前后台的通讯,在整个例子中Java+WebSocket起到的作用是负责客户端之间的通信,并不负责视频的传输,视频的传输依赖于WebRTC。

首先WebRTC,这个可以百度一下,大概就是一个音频和视频通讯技术,可以跨平台,只要能用浏览器的基本都可以使用,当然要你的浏览器支持。

这里引用了google的js库:channel.js。不过还是下载下来放到本地服务器吧,因为很多地方访问google.com很吃力啊。最开始就是这个js没有加载完郁闷了很久,还一直以为是代码写错了。

另外在进入页面的时候,注意初始化页面js中的一个参数:initiator:如果是创建人这个参数设为false;如果是加入的时候这个设置为true。为true的时候,才会发起视频通话的请求。

实现

对于前端JS代码及用到的对象大家可以去查看详细的代码介绍,我就贴一个连接的方法。首先建立一个客户端实时获取状态的连接,在GAE的例子上是通过GAE Channel API实现,我在这里用WebSocket实现,代码:

function openChannel() {  
     console.log("打开websocket");
     socket = new WebSocket("ws://192.168.1.158:8080/WebRTC/acgist.video/${requestScope.uid}");                
     socket.onopen = onChannelOpened;
     socket.onmessage = onChannelMessage;
     socket.onclose = onChannelClosed;  
     socket.onerror = onChannelError();
    }  

服务端代码很简单,就是收到用户的请求,发送给另外一个用户就可以了,这里处理的其实是用户WebRTC的一些信息,并不是去传输视频,如下:

import java.io.IOException;
import java.util.Collections;
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值