我们可以在WebForms中使用SignalR和WebRTC视频调用吗?

时间:2014-11-04 17:15:08

标签: c# asp.net webforms signalr webrtc

因为我是新手,所以可能没用了。我希望在我的ASP.NET WebForms项目中使用SignalR为注册和在线用户提供WebRTC视频调用功能。我试图在Webforms中搜索使用SignalR和WebRTC的漫游/示例超过一周,但我总是在MVC中找到示例。我们不能在WebForms中使用SignalR和WebRTC吗?如果我们可以使用,那么任何人都可以提供/帮助我一个非常简单和基本的演练/示例。

1 个答案:

答案 0 :(得分:2)

逻辑与signalR tutorial非常相似。除了您的消息是WebRTC需要通信以进行连接的消息。

Here is an example I wrote up。它通过signalR集线器向所有连接的客户端进行广播。但是,将其设置为仅某些用户与其他用户通信的位置非常简单。 Here is a more flushed out example but it uses MVC

基本信令逻辑完成客户端:

<script type="text/javascript">
        var signal = $.connection.webRTCHub;
        var ready = false;
        //set our client handler
        signal.client.broadcastMessage = function (from, message) {
            //handle your message that you received
        }

       //start the hub for long polling so it does not close    
       $.connection.hub.start({ transport: ['longPolling'] }).done(function () {
            ready = true;
        });
        //only send a message when we are ready
        var sendMessage = function (message) {
            if (!ready)
                setTimeout(sendMessage, 100, message);
            else
                signal.server.send(name, message);
        }

    </script>

转发消息的基本集线器类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;

namespace SignalRWebRTCExample
{
    public class WebRTCHub : Hub
    {
        //executed from javascript side via signal.server.send(name, message);
        public void Send(string from, string message)
        {
            //Code executed client side, aka, makes message available to client
            Clients.All.broadcastMessage(from, message);
        }
    }
}

启动信号器的基本启动课

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(SignalRWebRTCExample.Startup))]

namespace SignalRWebRTCExample
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}

免责声明:这是非常粗略的,但示例&#34;工作&#34;(流在客户端之间发送)。此代码未经过优化且不理想。 SignalR中有许多令人敬畏的功能未被利用,可能会使它更好,更有效。