首页 > 代码库 > 使用SignalR 2 注意事项

使用SignalR 2 注意事项

 

1、出现错误: signalR Error during WebSocket handshake: net::ERR_CONNECTION_RESET

  <system.web>
    <httpRuntime targetFramework="4.5" />
  </system.web>

2、引用SignalR 最新版

SignalR 2  需要.Net 4.5

PM> Install-Package Microsoft.AspNet.SignalR

默认使用的是 Newtonsoft.Json.6.0.0 , 如果项目之前已经引用过了
Newtonsoft.Json,请改为与 SignalR 同版本的!

3、创建Startup.cs 类

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

[assembly: OwinStartup(typeof(WD.Web.MVC.Startup))]

namespace WD.Web.MVC
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // 有关如何配置应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=316888
            app.MapSignalR();
        }
    }
}

4、创建集线器 ChatHub.cs 类

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using Microsoft.AspNet.SignalR;
using System.Runtime.Serialization.Json;
using Newtonsoft.Json;
using WD.Db.Contract;
using WD.Web.MVC.Common;
using WD.Web.MVC.SignalR;

namespace WD.Web.MVC
{
    public class ChatHub : Hub
    {
        public void Online()
        {
            Clients.All.SendMsg("张三","上线了" );
        }
    }
}

5、客户端初始化

var chat = $.connection.chatHub;   (chatHub 为后台集线器的类名,不过要把首字母小写

  chat.client.SendMsg = function (name, message) {  

    

    // SendMsg与集线器中的函数名保持一致,例:Clients.All.SendMsg("张三", "上线啦"),返回参数自定义,保持一致即可

     //TODO 处理接受消息      

  };

 $.connection.hub.start().done(function () {

  //TODO 发送上线消息
  chat.server.online();

  //TODO 初始化各种事件
 })

 

使用SignalR 2 注意事项