3分钟实现网页版多人文本、视频聊天室 (含完整源码)

基于SimpleWebRTC快速实现网页版的多人文本、视频聊天室。

1 实现方法

复制下面的代码,保存为一个html文件

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://simplewebrtc.com/latest.js"></script>
    <script>
 
        var webrtc = new SimpleWebRTC({
            // the id/element dom element that will hold "our" video
            localVideoEl: ‘localVideo‘,
            // the id/element dom element that will hold remote videos
            remoteVideosEl: ‘remoteVideos‘,
            // immediately ask for camera access
            autoRequestMedia: true,
            //url:‘http://111.172.238.250:8888‘
            nick: ‘wuhan‘
        });
 
 
 
        // we have to wait until it‘s ready
        webrtc.on(‘readyToCall‘, function () {
            // you can name it anything
            webrtc.joinRoom(‘room1‘);
 
            // Send a chat message
            $(‘#send‘).click(function () {
                var msg = $(‘#text‘).val();
                webrtc.sendToAll(‘chat‘, { message: msg, nick: webrtc.config.nick });
                $(‘#messages‘).append(‘<br>You:<br>‘ + msg + ‘\n‘);
                $(‘#text‘).val(‘‘);
            });
        });
 
        //For Text Chat ------------------------------------------------------------------
        // Await messages from others
        webrtc.connection.on(‘message‘, function (data) {
            if (data.type === ‘chat‘) {
                console.log(‘chat received‘, data);
                $(‘#messages‘).append(‘<br>‘ + data.payload.nick + ‘:<br>‘ + data.payload.message+ ‘\n‘);
            }
        });
        
    </script>
    <style>
        #remoteVideos video {
            height: 150px;
        }
 
        #localVideo {
            height: 150px;
        }
    </style>
</head>
<body>
    <textarea id="messages" rows="5" cols="20"></textarea><br />
    <input id="text" type="text" />
    <input id="send" type="button" value="send" /><br />
    <video id="localVideo"></video>
    <div id="remoteVideos"></div>
</body>
</html>

修改里面的nick:‘wuhan’为自己的名字,用firefox或chrome打开,即可开始测试。

2 效果

界面简陋了点,上面是收发消息,下面是本地和远程的视频图:

作者:疯吻IT 出处:http://fengwenit.cnblogs.com

3 原理

先简单介绍下SimpleWebRTC,它是WebRTC的一个封装类库。

WebRTC的目的是为了简化基于浏览器的实时数据通信的开发工作量,但实际应用编程还是有点复杂,尤其调用RTCPeerConnection必须对怎样建立连接、交换信令的流程和细节有较深入的理解。因此有高人为我们开发了WebRTC封装库,将WebRTC的调用细节封装起来,包装成更简单的API,使开发应用程序更简单。封装库的还有一个目的是为了屏蔽不同浏览器之间的差异,比如上面说的API名称的差异。当然,这些库都是开源的,能够依据自己的须要又一次改动。

眼下网上找到的有两种WebRTC封装库,一个是webrtc.io,网址是https://github.com/webRTC/webRTC.io,上面有具体说明和用法,有非常多demo使用它;还有一个是SimpleWebRTC,网址是https://github.com/HenrikJoreteg/SimpleWebRTC,貌似比webrtc.io用起来更简单。

3.1 视频聊天

这是官方第一个demo,三步创建视频聊天:

3.1.1 html页面

<!DOCTYPE html>
<html>
    <head>
        <script src="//simplewebrtc.com/latest.js"></script> 
    </head>
    <body>
        <video height="300" id="localVideo"></video>
        <div id="remotesVideos"></div>
    </body>
</html>

3.1.2 创建web RTC对象

var webrtc = new SimpleWebRTC({

  // the id/element dom element that will hold "our" video
  localVideoEl: ‘localVideo‘,
  // the id/element dom element that will hold remote videos
  remoteVideosEl: ‘remotesVideos‘,
  // immediately ask for camera access
  autoRequestMedia: true
});

3.1.3 进入房间

// we have to wait until it‘s ready

webrtc.on(‘readyToCall‘, function () {
  // you can name it anything
  webrtc.joinRoom(‘wuhan‘);
});

3.2 文本聊天

这个是最基本的功能,但官方文档里居然没有介绍,很奇怪。

3.2.1 html内容

<textarea id="messages" rows="5" cols="20"></textarea><br />
<input id="text" type="text" />
<input id="send" type="button" value="send" /><br />

3.2.2 发消息

// Send a chat message

$(‘#send‘).click(function () {
   var msg = $(‘#text‘).val();
   webrtc.sendToAll(‘chat‘, { message: msg, nick: webrtc.config.nick });
   $(‘#messages‘).append(‘<br>You:<br>‘ + msg + ‘\n‘);
   $(‘#text‘).val(‘‘);
});

3.3.3 收消息

// Await messages from others

  webrtc.connection.on(‘message‘, function (data) {
      if (data.type === ‘chat‘) {
          console.log(‘chat received‘, data);
          $(‘#messages‘).append(‘<br>‘ + data.payload.nick + ‘:<br>‘ + data.payload.message+ ‘\n‘);
      }
  });
时间: 2024-08-05 15:23:24

3分钟实现网页版多人文本、视频聊天室 (含完整源码)的相关文章

WebRTC实现网页版多人视频聊天室

因为产品中要加入网页中网络会议的功能,这几天都在倒腾 WebRTC,现在分享下工作成果. 话说 WebRTC Real Time Communication 简称 RTC,是谷歌若干年前收购的一项技术,后来把这项技术应用到浏览器中并开源出来,而且搞了一套标准提交给W3C,称为WebRTC,官方地址是:http://www.webrtc.org/.WebRTC要求浏览器内置实时传输音视频的功能,并提供一致的API供JS使用.目前实现这套标准的浏览器有:Chrome.FireFox.Opera.微软

彩38完整源码下载+带H5自适应手机版

彩38完整源码下载+带H5自适应手机版源码下载Q:2947702644运行环境:WIN+APACHE+PHP5.4+MYSQL5.6+伪静态源码授权:无加密文件及认证授权,永久性可直接使用.版本支持:PC/WAP网页版编程语言:PHP开发框架:ThinkPHP框架开发ThinkPHP是一个框架:MVC(采用面向对象思想)框架 市面上常用的框架: zend framework yii thinkPHP ThinkPHP: 有完善的中文资料,使用相对来说比较多 下载ThinkPHP 解压之后生成两个

一组网页边栏过渡动画,创意无限!【附源码下载】

今天我们想与大家分享另一套过渡效果.这一次,我们将探讨如何实现侧边栏的过渡动画,就像我们已经在多级推出菜单中使用的.我们的想法是,以细微的 过渡动画显示一些隐藏的侧边栏,其余的内容也是.通常侧边栏滑入,把其他内容推到一边.这个可过程中可以加入很多微妙而奇特的效果,而今天这篇文章能够给 你一些启示. 温馨提示:为保证最佳的效果,请在 IE10+.Chrome.Firefox 和 Safari 等现代浏览器中浏览. 立即下载      在线演示 因为我们希望能够在一个页面上展现所有的效果,因此我们示

二人牛牛完整源码下载

这里给大家分享二人牛牛源码如下:#include "StdAfx.h"#include "GameLogic.h"////////////////////////////////////////////////////////////////////////////扑克数据BYTE CGameLogic::m_cbCardListData[54]={    0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,

财付通支付接口完整源码实例php版

财付通支付接口完整源码实例php版 版权声明:本文为博主原创文章,未经博主允许不得转载. 支付动作文件: [php] view plain copy <?php //------------------ 参数开始 ------------------ //商户号 $bargainor_id='45698236888'; //密钥 $key='sjdlfjsdifjieojf454654'; //返回地址 $return_url="http://".$_SERVER['HTTP_H

java编程思想第四版中net.mindview.util包下载,及源码简单导入使用

在java编程思想第四版中需要使用net.mindview.util包,大家可以直接到http://www.mindviewinc.com/TIJ4/CodeInstructions.html 去下载,并按照所在页面的操作进行操作.当然也可以直接我下载下面的链接,下载的直接是JAR包,可以直接导入并使用: net.mindview.util包:百度网盘:点击下载  密码: ggpi java编程思想第四版源码:百度网盘:点击下载  密码: ur3e 下面我简单的介绍一下源码在Eclipse中的导

亿人互助理财APP投资返息源码定制开发

绿皮书互助APP投资返息理财找庄经理:18565189719微/电 绿皮书互助激活码排单制.绿皮书互助系统互助商城app开发.绿皮书互助投资返息.绿皮书互助理财.---专业开发公司,玩家勿扰---一.操作流程及规则:1.注册后团队长找客--服够买激活码20元,排单币10元,用推荐人二维码注册.2. 注册完成后,先完善信息填写微信支付宝收款码,排单选择金额100/200/400利息45%.二.静态+动态奖金+分享六代 静态收益1.投资本金100+利息145;2.投资本金200+利息290;3.投资

手机版_仿微信 陌陌 安卓版(android)/苹果版(iPhone ios),移动社交APP系统源码,企业即时通讯APP程序源码,手机聊天软件源码,移动聊天APP开发

一:系统背景 根据国际电信联盟发布的<衡量信息社会发展报告>中显示:2014年全球手机用户已超过70亿人,全球互联网用户已超过30亿人,世界上移动通信设备用户总数已超过世界总人口数(还在稳定增长中).根据工业和信息化部发布的数据显示:目前我国移动电话用户规模将近13亿,移动互联网用户规模接近9亿,占总网民数的八成多(我国已是全球移动互联网第一大国).4G/5G时代的开启以及移动终端设备的凸显为移动互联网的发展注入巨大的能量,中国移动互联网产业即将迎来前所未有的飞跃. 二:编写目的 事实证明我国

【免接口!免接口】轻奢版视频强制分享裂变程序源码 分享朋友圈才能看源码

轻奢版视频强制裂变程序[免接口版]正式上线,不需要认证公众号和备案域名! 优化防封和跳转逻辑,入口.落地.分享域名全部隔离 并加入针对微信IOS版的特殊防封策略! 除了分享卡片没有“小字描述”和“分享图标”以外,其他功能和[接口版]基本无差异! 轻奢版视频免接口版主要更新如下: 1.代码完全重构,大范围增强了程序的健壮性! 2.加入FuckXX脚本,禁止一切XX节点的访问,优化防封! 3.加入来路判断,非法访问将禁止,强化防封! 4.数据全部缓存化,前台完全避免对数据库的请求调用,所有数据调用全