使用SignalR 2 註意事項
阿新 • • 發佈:2017-07-13
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 註意事項