一、随便你在哪个命名空间下新建一个Startup类,并在在该类中注册SignalR。

using Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

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

二、在web.config的configuration\appSettings下配置节点,value值是Startup的全类型名称

<appSettings>
    <add key="owin:AppStartup" value="SignalRTest.Utils.Startup"/>    
</appSettings>

三、在前端页面中引入相关js文件,如下:

    <script src="scripts/jquery-1.10.2.min.js"></script>
    <script src="scripts/jquery.signalR-2.2.2.min.js"></script>
    <script src="signalr/hubs"></script>

啥?找不到signalr/hubs这个文件,不要慌,这个是程序自动生成的,在页面中只需要加上就OK!

四、新建一个Hub派生类

using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Threading.Tasks;
using MyProject.Entity;
using SignalRTest.BLL;

namespace SignalRTest.Utils {
    [HubName("groupChatHub")]
    public class GroupChatHub:Hub {
        [HubMethodName("sendMsg")]
        public void SendMsg(string data){
        
        }
    }
}        

新建的GroupChatHub类型继承Hub抽象类。在GroupChatHub类中实现的方法可以在客户端页面的当做js方法调用,相当于在客户端调用服务端的方法,和AjaxPro有点像。

具体调用的情景如下所示:

 $(function () {
            //链接hub            
            var ticker = $.connection.groupChatHub;
            //启动
            $.connection.hub.start().done(function () {
                //启动完毕,则调用服务器方法 创建聊天房间         
         ticker.server.joinRoom(QueryString("sid")).done(function () {
}); }); $("#btnSend").click(function () { //获取文本框信息 var tbxInput = $(this).parent().children(".msgs"); if (tbxInput) { var msg = tbxInput.val() || ''; if (msg.length > 0) { // 调用服务器方法 主动发送消息,传入发送组,和发送的内容。 ticker.server.sendMsg(QueryString("sid"), msg); tbxInput.val(''); } else tbxInput.focus(); } }); $(".msgs").bind("keydown", event, function () { if (event.keyCode == 13) $("#btnSend").click(); }); });

由此看出,继承自Hub抽象类的派生类GroupChatHub中的公共方法,是可以在前端通过js调用的!

 

 posted on 2018-01-12 15:23  F风  阅读(290)  评论(0编辑  收藏  举报