如果用HTML5做一个在线视频聊天【原创】
首先使用node.js 搭建一个简易的 websocket服务器:
var cons = new Array(); var ws = require('ws').Server; var server = new ws({ port: 8888 }); server.on('connection', function (ws) { console.log('new connection founded successfully'); cons.push(ws); ws.on('message', function (data) { for (var i = 0; i < cons.length; i++) { cons[i].send(data); } }); ws.on('close', function () { for (var i = 0; i < cons.length; i++) { if (cons[i] == ws) cons.splice(i, 1); } }); }); console.log('websocket-server running...');
接下来为了更容易理解, 我在这分为两个页面,一个为视频者页面,另一个是观看者页面
下面代码为视频者页面:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="jQuery_1.8.2.min.js"></script> <script type="text/javascript"> $(function () { var video = document.getElementById("video"); var canvas = document.getElementById("canvas"), context = canvas.getContext("2d"); var w; if (navigator.webkitGetUserMedia) { navigator.webkitGetUserMedia({ video: true }, function (stream) { video.src = window.webkitURL.createObjectURL(stream); video.play(); w = new WebSocket(url); w.onopen = function () { sendImg(); } w.onmessage = function (e) { sendImg(); } }, function () { console.log("video error"); }); var host = 'localhost'; var port = 8888; var url = 'ws://' + host + ':' + port + '/'; function sendImg() { context.drawImage(video, 0, 0, 320, 320); var imgData = canvas.toDataURL(); w.send(imgData); } } }); </script> </head> <body> <video id="video" width="640" height="480" style="background:#000;" autoplay></video> <canvas style="display:none" id="canvas" width="320" height="320"></canvas> </body> </html>
接下来是观看者页面:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="jQuery_1.8.2.min.js"></script> <script> $(function () { var host = 'localhost'; var port = 8888; var url = 'ws://' + host + ':' + port + '/'; var w = new WebSocket(url); w.onmessage = function (e) { $("#canvas").attr("src", e.data); } }); </script> </head> <body> <img id="canvas" width="320" height="320" /> </body> </html>
效果如下(不要看人!看效果^_^):
操作说明是对用户体验师的侮辱!
分类:
HTML5
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端