1. 程式人生 > >使用SignalR 2 註意事項

使用SignalR 2 註意事項

shake class common ins psi client collect sock web

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 註意事項