今天想要練習一個簡單的聊天室,輸入使用者名稱後,就可以進房聊天,主要使用 ASP.NET SingalR,這篇主要後端的部分。
SingalR 主要是微軟推出的雙向即時通訊的解決方案。
我自己後端是 ASP.NET Web API 的專案。
第一步就是用 nuget 安裝套件
這個是 SingalR 套件。
https://www.nuget.org/packages/Microsoft.AspNet.SignalR/2.4.1
這個是 Owin CORS 套件。
https://www.nuget.org/packages/Microsoft.Owin.Cors
建立 Startups.cs 新增項目,直接查詢 owin,基本應該可以找到 OWIN 啟動類別。
Startups.cs
預設其實只有要寫 app.MapSignalR();
,我會寫成 app.Map("/signalr", map => {...});
主要是因為我希望他的 Cors 只影響到 SignalR 本身。
我之前是寫 app.UseCors(CorsOptions.AllowAll);
導致我在打其他 API 的時候他說我有多個 CORS 的 Header。
新增一個資料夾 Hubs,然後新增項目,找到 SignalR 然後選 SignalR Hub Class (v2)
建立一個 ChatHub
建立一個 MVC 的空白 Controller,寫一個空白的 Action。
View 的內容
結果
小結語
為什麼這次的練習要分篇,主要是因為 ASP.NET SingalR 我自己很久沒有用了,複習一下。
特別是因為之前都是在同一個網站,現在前後端分離,遇到了 CORS 的問題。
明天會弄一篇 Chat & SignalR (Ionic) ,練習的時候,上網找了很多的資料,特別是在 Angular 使用中 SignalR 的部分,但是我研究了很久,很多詭異的錯誤,外加因為我的後端架在 IIS 的虛擬目錄下,導致 <script src="~/signalr/hubs"></script>
前端一直 404 Not Found。