Home > Article > Web Front-end > Using HTML5+SignalR2.0 (.Net) to realize code sharing of native Web videos
Directory
Those who don’t know SignalR can go directly to the directory below
SignalR series directory
Preface
- -, I'm here again. Without further ado today, let's go directly to implement Web video chat.
The technology used is as follows:
HTML5 WebRTC
SignalR2.2.0
localResizeIMG3 (front-end image compression technology, open source)
The effect is as shown in the figure (you know the mosaic, the Demo effect is relatively simple):
Text
First of all, let’s take a look at the front-end implementation, which is mainly obtained through HTML5’s WebRTC technology The video stream is converted into pictures and then sent to the SignalR server using the technology of compressing and timing. No more explanation, just look at
Notecanvas = document.getElementById("canvas"), context = canvas.getContext("2d"), video = document.getElementById("video"), videoObj = { "video": }, errBack = "Video capture error: " (navigator.getUserMedia) { navigator.getUserMedia(videoObj, = (navigator.webkitGetUserMedia) { navigator.webkitGetUserMedia(videoObj, = data = (navigator.mozGetUserMedia) { navigator.mozGetUserMedia(videoObj, = window.setInterval(0, 0, 320, 240 type = 'jpg' imgData =0.1, done: data = 500)In this way, we will get the relevant data (PS: The obtained image The size is about 4800 length
string
, the compression rate is 0.1 and the length is 2300 after compression. You can modify the compression rate according to the bandwidth)
Let’s take a look at the implementation code of SignalR (key method Already marked in yellow): [HubName("getMessage")] public class TestHub : Hub
{ public void SendMessage(string aaaa)
{
Clients.All.broadcastMessage(aaaa);
} public void SendImage(string imagedata)
{ //获取图像数据,转发给其他客户端
Clients.Others.showimage(new {id=Context.ConnectionId,data=imagedata});
} public override System.Threading.Tasks.Task OnConnected()
{
Clients.Others.addKuang(Context.ConnectionId);
return base.OnConnected();
} public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled)
{
Clients.All.romeKuang(Context.ConnectionId);
return base.OnDisconnected(stopCalled);
}
}
Let’s take a look at the front-end SignalR implementation code:
// 这里是注册集线器调用的方法,和1.0不同的是需要chat.client后注册,1.0则不需要 var chat = $.connection.getMessage; chat.client.broadcastMessage = function (name) { // HTML编码的显示名称和消息。 var encodedMsg = $('<p />').text(name).html(); // 将消息添加到该页。 $('#messsagebox').append('<li>' + encodedMsg + '</li>'); }; //获取图片数据,并实时显示 chat.client.showimage = function (data) { if ($("#" + data.id).length<=0) { var html = '<p style="float: left; border: double" id="p' + data.id + '">\ <img id="'+ data.id + '" width="320" height="240">\ <br />\ <span>用户'+ data.id + '</span>\ </p>' $("#contextp").append(html) } $("#" + data.id).attr("src", data.data); } // 获取用户名称。 $('#username').html(prompt('请输入您的名称:', '')); // 设置初始焦点到消息输入框。 $('#message').focus(); // 启动连接,这里和1.0也有区别 $.connection.hub.start().done(function () { $('#send').click(function () { var message = $('#username').html() + ":" + $('#message').val() // 这里是调用服务器的方法,同样,首字母小写 chat.server.sendMessage(message); // 清空输入框的文字并给焦点. $('#message').val('').focus(); }); });
In this way, we have easily completed the HTML5+SignalR2.0 video chat program.
Written at the end
The above is the detailed content of Using HTML5+SignalR2.0 (.Net) to realize code sharing of native Web videos. For more information, please follow other related articles on the PHP Chinese website!