了解WebRTC之一:SignalR实现信令服务器

一、信令服务器是什么?

作为webRTC中极为重要的一部分,会话管理需要建立服务器端与客户端之间的连接。
有人就问了:webRTC建立的是点对点连接,流数据是从浏览器直接传输到另一个浏览器,不需要服务器周转,怎么还需要建立服务器端与客户端连接呢?
这是个很好的问题!尽管webRTC建立的是P2P连接,但由于流数据传输需要一条信道,而这个信道则是由信令服务器提供的。而在webRTC中并没有这一过程,所以需要我们手动建立信号的传递和交涉过程。

二、常用Web信息交互技术

即将建立的服务器需实现最基本的功能:信息交互,而web中常用信息交互方式如下:
这里写图片描述
总结多种交互方式:websocket是全双工通信,实现底层,不易出错,优于长轮询,要求浏览器为高版本,低版本不支持。

三、Asp.Net利器SignalR

SignalR是.Net上的一个开源库,主要用于实时更新的应用程序。它包括一个服务器端和js端(客户端),集成了多种消息通讯的方式(长轮询、websocket)。针对不同的网络和浏览器环境,会选择合适的通讯方式。合适情况下,会使用Websocket通讯。
原理这里就暂时不解释啦,我们上手玩一下先~

四、 添加SignalR及应用

一、.Net程序添加SignalR包

这里写图片描述

二、启动项startup.cs中添加signalR入口启动

ConfigureAuth(app);
app.MapSignalR(); // 启用SignalR

MapSignalR是默认的注册SignalR入口,可以定义任意SignalR实现接口,比如重新定义服务器地址(默认是 /signalr)、自定义身份证验证和授权机制等等。

三、客户端和服务器交互过程
应用场景:客户端在点击操作时将信息发给服务器端,服务器端再接收到信息之后,加入到维护的字典中,并将字典群发给所有用户

客户端发送计划信息:

  //推演按钮
    $("#deduct").click(function () {
        var planCoord = { lineArray: [[{ x: 200, y: 40 }, { x: 400, y: 40 }]], txtArray: [[{ txt: "BTA", pos: { x: 300, y: 34 } }, { txt: "423", pos: { x: 216, y: 56 } }, { txt: "702", pos: { x: 384, y: 56 } }]] };
        var userName = selfname;
        var planName = "日程安排计划";
        var planDate = "2018/09/07";
        var data = {
            userName: userName,
            planDate: planDate,
            planCoord: planCoord,
            planName: planName,

        };

        video.server.sendCooperateInfo(data);//调用服务器端函数
    });

注意:sendCooperateInfo服务器端函数,但注意服务器端函数名首字母大写,略有出入

服务器端接受信息:

  //发送协同信息
        public void SendCooperateInfo(object data)
        {
            if(!_onlineCoordInfo.ContainsKey(data))
            {
                _onlineCoordInfo.Add(data, 1);
            }
            Clients.All.publshCoordInfo(_onlineCoordInfo.Select(i => i.Key));
        }

客户端接受群发信息:(这里函数名一致)

  publshCoordInfo: function (data) {
            var coordInfo = new Array();
            for (var i = 0; i < data.length; i++)
            {
               coordInfo[i] = {
                    planCoord: data[i].planCoord,
                    userName: data[i].userName,
                    planName: data[i].planName,
                    planDate: data[i].planDate,
                };
            }

        },

五、参考链接

https://www.cnblogs.com/Wddpct/p/5650015.html#2.1
http://asdfblog.com/page/10

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
WebRTC信令服务器实现WebRTC通信的关键组件,它负责处理WebRTC会话的建立、维护和终止。WebRTC信令服务器起着桥梁的作用,连接了不同的对等端,并协调它们之间的通信。在WebRTC中,信令服务器用于传递信令消息,包括会话描述协议(Session Description Protocol,SDP)和候选者(candidates)信息,以便对等端能够互相发现、建立和交换媒体流。 关于WebRTC信令服务器的选择,有几种常见的方案。一种是使用专门设计的信令服务器,如开源的Janus、Kurento和Jitsi等。这些服务器提供了丰富的API和功能,可以满足各种复杂的通信需求。 另一种选择是利用现有的Web服务器实现信令功能。常见的选择包括Apache、Nginx和NodeJS等。这些服务器在处理HTTP/HTTPS、WS/WSS等基于TCP的传输协议方面有天然的优势。对于实时通信的信令服务器,负载一般不会很高,一台服务器就可以满足需求。使用Nginx和NodeJS来实现信令服务器相对容易,并且具有较高的稳定性。 在WebRTC中,STUN服务器和TURN服务器也是必不可少的组件。STUN服务器用于获取对等端的公网IP地址和端口信息,而TURN服务器则用于中继媒体流,以便在对等端之间进行通信。在创建RTCPeerConnection对象时,需要提供STUN/TURN服务器的相关信息。 总而言之,WebRTC信令服务器实现WebRTC通信的关键组件,它起着连接对等端并协调通信的作用。选择合适的信令服务器取决于具体的需求和技术要求,可以使用专门设计的信令服务器,如Janus、Kurento和Jitsi等,也可以利用现有的Web服务器实现信令功能,如Apache、Nginx和NodeJS等。同时,STUN服务器和TURN服务器也是不可或缺的组件,用于获取对等端的网络信息和中继媒体流。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值