Chat & SignalR (Server)

今天想要练习一个简单的聊天室,输入使用者名称後,就可以进房聊天,主要使用 ASP.NET SingalR,这篇主要後端的部分。

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。

建立 Hub

新增一个资料夹 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。


<<:  etcd 元件浅解

>>:  [2020铁人赛Day26]糊里糊涂Python就上手-Numpy的观念与运用(上)

Day21 类别与物件--魔术方法construct and deconstruct

类是通过class关键字来定义的,是对某个物件的定义,包含有关物件名称、方法、属性和事件,不过实际上...

Day_21 : 让 Vite 来开启你的Vue 之 跨元件资料传递 Provide & Inject

Hi Dai Gei Ho~ 我是 Winnie ~ 在今天文章中,我们要来说说 Vue3 Comp...

JS 27 - 平滑滚动,让视窗不再是闪电侠!

大家好! 我们今天要实作让视窗能平滑地滚动到锚点。 我们进入今天的主题吧! 程序码 (functio...

DAY 6 Big Data 5Vs – Volume(容量) – Redshift Spectrum

大量的资料势必可能来自不同资料源,在结构化资料库的世界常用的就是联合查询。那如果我的资料不全都在结构...

day17:First-class function

在了解 first-class 一等公民函式前,我们先来看看 MDN 对於 first class ...