SignalR推送服务

来源:互联网 发布:国产羽绒服 知乎 编辑:程序博客网 时间:2024/05/28 15:13

页面代码

<script src="~/Scripts/jquery-1.11.1.min.js"></script><script src="~/Scripts/jquery.signalR-2.2.2.min.js"></script><script src="http://localhost:7754/signalr/hubs"></script> <div><div>服务器消息:</div><div id="serverMsg" style="border:1px solid #a0a0a0;height:400px;width:400px;overflow-y:auto;"></div></div>        </div><script type="text/javascript">    var trade;    var tradeList = Array();    $(document).ready(function () {        $.connection.hub.url = "http://localhost:7754/signalr";        trade = $.connection.tradeHub;        //接受服务器消息        trade.client.addMsg = function (message) {            if (message != "") {                console.log(message);                            }        }; //推送跨域设置xdomain        $.connection.hub.start({ xdomain: true }).done(function () {            console.log("连接成功, transport = " + $.connection.hub.transport.name);        });    });   </script>


后台代码

using Microsoft.AspNet.SignalR;using System;using System.Collections.Generic;using System.Linq;using System.Threading;using System.Threading.Tasks;using System.Web;namespace SignalRPush.Hubs{    public class TradeHub : Hub    {        public void Send(string message)        {            Clients.All.addMsg(message);        }


此控制器是用于接收外部的请求,然后把消息推送出去,方便外部项目调用

using Microsoft.AspNet.SignalR;using SignalRPush.Hubs;using System;using System.Web.Mvc;namespace SignalRPush.Controllers{    public class ReceiveController : Controller    {               public string GetMsg(string msg)        {            int code = 0;            string bkMsg = "推送失败";            try            {                IHubContext context = GlobalHost.ConnectionManager.GetHubContext<TradeHub>();                context.Clients.All.addMsg(msg);                       code = 1;                bkMsg = "推送成功";            }            catch (Exception ex)            {                code = 0;                bkMsg = "推送失败";                if (ex.InnerException!=null)                {                    LogHepler.AddLog("400", ex.InnerException.Message);                }else                {                    LogHepler.AddLog("400", ex.Message);                }                            }             var obj = new { code = code, msg = bkMsg };            string backMsg = Newtonsoft.Json.JsonConvert.SerializeObject(obj);            return backMsg;        }    }}


在项目上添加类Startup.cs,跨域支持需要引用Microsoft.Owin.Cors组件

using System;using System.Threading.Tasks;using Microsoft.Owin;using Owin;[assembly: OwinStartup(typeof(SignalRPush.Startup))]namespace SignalRPush{    public class Startup    {        public void Configuration(IAppBuilder app)        {            //设置跨域支持            app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);            app.MapSignalR();        }    }}