HTML 5 WebSocket实现实时视频文字传输(5)

电脑杂谈  发布时间:2019-06-02 11:31:16  来源:网络整理

HTML5的Canvas 可以实现绘图 然后应该是这样写的

websocket实现视频聊天_websocket聊天_android即时聊天怎么实现

  1. <!DOCTYPE html> 
  2. <html xmlns="http://www.w3.org/1999/xhtml"> 
  3. <head> 
  4.     <title></title> 
  5. </head> 
  6. <body> 
  7.     <div> 
  8.         <input type="text" id="msg" value="beyond is number one!" /> 
  9.         <button onclick="sendMsg()">走你~</button> 
  10.     </div> 
  11.     <canvas id="myCanvas" style="width: 400px; height: 500px;"></canvas> 
  12.     <div id="output"></div> 
  13.     <script type="text/javascript"> 
  14.         var wsServer = 'ws://192.168.10.242:9999/webSocket.ashx'; //服务器地址  
  15.         //var wsServer = 'ws://localhost:36027/webSocket.ashx'; //服务器地址  
  16.         var canvas = document.getElementById("myCanvas");  
  17.         var context = canvas.getContext("2d");  
  18.         var websocket = new WebSocket(wsServer); //创建WebSocket对象  
  19.         websocket.onopen = function (evt) {  
  20.             //已经建立连接  
  21.             alert("已经建立连接");  
  22.         };  
  23.         websocket.onclose = function (evt) {  
  24.             //已经关闭连接  
  25.             //alert("已经关闭连接");  
  26.             writeToScreen("连接关闭");  
  27.         };  
  28.         websocket.onmessage = function (evt) {  
  29.             //收到服务器消息,使用evt.data提取  
  30.             var image = new Image();  
  31.             image.onload = function () {  
  32.                 //image.height  
  33.                 context.clearRect(0, 0,  
  34.                    canvas.width, canvas.height);  
  35.                 context.drawImage(image, 0, 0, canvas.width, canvas.height);  
  36.             }  
  37.             image.src = URL.createObjectURL(evt.data);  
  38.         };  
  39.         websocket.onerror = function (evt) {  
  40.             //产生异常  
  41.             writeToScreen(evt.message);  
  42.         };  
  43.         function sendMsg() {  
  44.             if (websocket.readyState == websocket.OPEN) {  
  45.                 msg = document.getElementById("msg").value;  
  46.                 websocket.send(msg);  
  47.                 writeToScreen("发送成功!");  
  48.             } else {  
  49.                 writeToScreen("连接失败!");  
  50.             }  
  51.         }  
  52.  
  53.         function writeToScreen(message) {  
  54.             var pre = document.createElement("p");  
  55.             pre.style.wordWrap = "break-word";  
  56.             pre.innerHTML += message;  
  57.             output.appendChild(pre);  
  58.         }  
  59.     </script> 
  60. </body> 
  61. </html> 

context.drawimage(image , 0 ,0 , image.width , image.height , 0 ,0 , canvaswidth , canvasheight)。context.filltext(text,canvas.width/2,canvas.height/2)。context.drawimage(image,sx,sy,sw,sh,dx,dy,dw,dh):选取图像的一部分矩形区域进行绘制。

websocket接到数据后通过

image.src = URL.createObjectURL(evt.data);转换成图片对象

ok 这样能实现接收图片了,然后服务端发送的时候

  1. //Buffer里面为你的图片数据 你可以通过文件流的方式来打开  
  2. await socket.SendAsync(buffer, WebSocketMessageType.Binary,true, CancellationToken.None);  
  3. //注意此时WebSocketMessageType 为Binary二进制流 

然后我实现了一个 读取本地文件夹 每隔1秒发送图片给网页的服务端

部分代码如下

  1.  string imgPath = HttpContext.Current.Server.MapPath("images");  
  2.                string[] files = Directory.GetFiles(imgPath);  
  3. for (int i = 0; i < files.Length; i++)  
  4.                        {  
  5.                            using (FileStream fs = new FileStream(files[i], FileMode.Open))  
  6.                            {  
  7.                                byte[] imgData = new byte[fs.Length];  
  8.                                fs.Read(imgData, 0, imgData.Length);  
  9.                                //buffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(userMessage));  
  10.                                buffer = new ArraySegment<byte>(imgData);  
  11.                                // Asynchronously send a message to the client  
  12.                                await socket.SendAsync(buffer, WebSocketMessageType.Binary,  
  13.                                        true, CancellationToken.None);  
  14.                                Thread.Sleep(1000);  
  15.                            }  
  16.                            if (i == files.Length - 1)  
  17.                                i = 0;  
  18.                        } 

这样图像传输解决了,然后实现套接字 就可以传输实时图片了。

windows图片查看器是xp系统自带的看图工具,在未安装其他图片浏览软件之前,系统将默认用windows图片查看器来浏览图片。浏览网页时,它可以帮助你方便的下载当前页面上的所有图片,这个功能在浏览某些论坛的贴图版时非常有用,看到喜欢的大量图片,再也不需要用"图片另存为..."一个一个的下载保存了.。jpg图片浏览器v1.3.1 官方最新版中文更新时间:3-24 jpg图片查看器是一款非常好用的jpg图片浏览软件,支持将图片进行压缩和拉伸,支持图片的查找和导入,导入速度快,浏览体验极佳,喜爱的朋友赶快到绿色资源网下载使用吧。

(这张图是在Windows Phone模拟器里面的IE浏览器上 证明了 它支持WebSocket)

(Windows 上的客户端 ^.^ Windows Phone Windows 8都能的)

seo北京总结:花费一定精力的文章,价值差不到哪去.有些人文才很好,20分钟就能写一篇文章(自己凭空写喽),有些人去搜集、抄袭优质文章、整编,却花费了1小时.很显然,后者是花费了一定的精力,内容更加充实.。2、标题和段落标题是文章的眼睛,也是阅卷老师对文章的第一印象,特别是自拟题目写作,阅卷老师很看重考生所拟的标题,小学三年级作文《三年级作文我的老师》.俗话说:“秧好一半谷,题好一半文”,可见题目的重要性.有些考生先写正文再拟标题,文章写好后也许是没有时间写标题,也许是忘了补写标题.虽然评分规定无标题扣2分,但实际结果却远非2分.有人曾做过这样的实验,将几篇写得较好的作文,按保留标题和隐去标题两种类型请两组老师分别予以阅卷,其分数差别一般都在5分以上.这是因为阅卷老师对无标题作文产生了一种心理距离,不知不觉便降低了分数等级.至于如何拟题,我觉得应做到这样几条:①确切.指符合文章内容,也指遣词造句符合规范).②精练.指标题字数恰当.③生动.指题目能体现出一种活力,具有可读性,饶有情趣.④新颖.指有新视角、新思路、新感悟,能够给人一种新鲜感.⑤有意蕴.指有内在的含义.拟题方法多种多样,可以运用修辞拟题,可以引用俗语拟题,可以化用古语拟题,可以借用成语拟题,可以套用流行语拟题,也可以巧用其他学科公式或符号拟题等等,考生可以根据自己的情况灵活运用.段落:考试作文最忌首、腹、尾三段式的结构.把文章分为几段更好。文章与老婆马伊琍是因为拍摄电视剧而认识的,文章与老婆马伊琍甚至还相差8年哦,在年龄差上面就不被看好的文章还有马伊琍,最后竟然历经了多年的恋爱长跑却依然是人前人后的模范夫妻哦,最后所爆发出来的文章与姚笛出轨的事件最终有导致文章与老婆马伊琍离婚吗。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-103122-5.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...